Windows: скрипт/программа для USB-ключа, который открывает консоль и устанавливает путь и рабочий каталог

Целью этого вопроса является создание переносимого сценария/программы для Windows, которая помогла бы пользователям запускать (консольные) программы непосредственно с USB-накопителя (хотя и не обязательно через автозапуск). Таким образом, скрипт/программа будет делать следующее при двойном щелчке:

  • Запустите консоль (подойдет cmd) и введите командную строку DOS,
  • Настройте текущую директорию на конкретную директорию WorkingDir на USB-накопителе (которая содержит различные программы [Python]),
  • Установите путь, чтобы пользователь мог запустить команду (python.exe), найденную в другом каталоге USB-ключа (чтобы пользователь мог запускать различные программы Python, найденные в WorkingDir).

Все это основано на Portable Python, который находится на USB-накопителе. Я также хотел бы иметь возможность просто положить содержимое ключа на жесткий диск и использовать его оттуда.

Я попытался написать файл, содержащий такие команды, как:

PATH=..\"Portable Python 2.7.2.1\App":%PATH%
cd WorkingDir
cmd

но я не уверен, как это назвать, чтобы Windows запускала его (поэтому я не смог увидеть, будут ли работать эти команды).

Я не очень разбираюсь в DOS и Windows, поэтому буду признателен за любую помощь!


person Eric O Lebigot    schedule 12.09.2011    source источник


Ответы (2)


На самом деле, в Windows вы используете ; для разделения путей :) И не стоит использовать .. вот так. Вы можете использовать %CD%, чтобы получить текущий каталог, а затем перейти из него. И не используйте кавычки. Кроме того, вы можете поставить @ перед любой командой, которую вы не хотите отображать на консоли.

Вы можете поместить это в run.bat (это должно работать: P):

@PATH=%PATH%;%CD%\..\Portable Python 2.7.2.1\App
@cd WorkingDir
@cmd

А затем просто дважды щелкните по нему, и он откроет командную строку так, как вы этого хотите. Или, может быть, вы можете добавить файл autorun.inf, чтобы он открывался автоматически.

person xx77aBs    schedule 12.09.2011
comment
Спасибо. Пробовал вызывать скрипт run.bat, но двойной щелчок по нему запускает текстовый редактор. Есть ли способ сделать скрипт кликабельным? - person Eric O Lebigot; 13.09.2011
comment
PS: похоже, что скрипт на самом деле называется run.bat.txt, но Windows Vista показывает его как run.bat. Я нашел способ переименовать его, и теперь все работает. - person Eric O Lebigot; 13.09.2011
comment
Разве %PATH% не следует помещать в конец нового пути, а не в его начало? на самом деле хотелось бы, чтобы программы (в том числе Python), которые установлены на ключе, выполнялись в приоритете. - person Eric O Lebigot; 13.09.2011
comment
Да, можете поставить в начале, моя ошибка ;) - person xx77aBs; 13.09.2011
comment
Спасибо за подтверждение, так как я не был уверен, как Windows обрабатывает приоритет пути. - person Eric O Lebigot; 13.09.2011
comment
Ничего страшного, рад, что был чем-то полезен ;) - person xx77aBs; 13.09.2011

Вам нужно создать два файла:

autorun.inf

[autorun]
open=cmd.exe "Python Console" /k autorun.cmd
action=Open Python Console...

autorun.cmd

@Echo Off
CD %~d0\WorkingDir
Path %Path%;%~d0\Portable Python 2.7.2.1\App

Фраза %~d0 представляет диск, на котором находится командный файл, а именно букву флэш-накопителя (E:).

Теперь я столкнулся с двумя легкими икотами. На моем USB-накопителе уже был скрытый системный файл autorun.inf только для чтения. Мне пришлось снять защиту с помощью следующей команды, прежде чем я смог его отредактировать.

Attrib autorun.inf -r -s -h

Моя вторая проблема заключается в том, что Windows 7 не запускается автоматически с USB-накопителя. Вы должны щелкнуть правой кнопкой мыши диск в проводнике и выбрать «Запустить консоль Python…».

person Hand-E-Food    schedule 12.09.2011
comment
Я могу что-то упустить, но если предполагается, что это консоль Python, то разве скрипт не должен запускать консоль Python? - person Andriy M; 13.09.2011
comment
@Andriy M: пользователям действительно нужна оболочка DOS, чтобы они могли запускать оттуда различные программы Python. Я отредактировал вопрос, чтобы сделать это полностью явным, спасибо. В качестве примечания: Portable Python уже предлагает сценарии, запускающие оболочку Python. - person Eric O Lebigot; 13.09.2011