Открыть файл в программе из окна командного файла - PullRequest
0 голосов
/ 28 октября 2019

У меня есть командный файл для открытия группы программ по требованию (не при запуске)

Например,

cd "C:\Program Files (x86)\Microsoft Office\root\Office16"
start lync.exe

Я хочу автоматически открывать файлы внутри другой программы, в частности, скрипты AutoHotKeyно с возможностью открывать общие файлы, например, что-то вроде

    d:
    cd "D:\.PortableApps\AutoHotkey_1.1.28.02\" 
start notifier.ahk AutoHotkeyU64.exe

Я пробовал

START "" /D "D:\.PortableApps\AutoHotkey_1.1.28.02\notifier.ahk" "D:\.PortableApps\AutoHotkey_1.1.28.02\AutoHotkeyU64.exe"

Ответы [ 2 ]

1 голос
/ 28 октября 2019

Я бы рекомендовал, прежде всего, открыть окно командной строки и ввести start /?, чтобы прочитать информацию об использовании.


Для вашего первого примера вам нужно просто Start ваш исполняемый файл linc.exe напрямую, вам не нужно менять рабочий каталог, чтобы сделать это:
@Start "" "C:\Program Files (x86)\Microsoft Office\root\Office16\lync"

В приведенном выше примеревы заметите, что поскольку первая строка в двойных кавычках, как ожидается, будет заголовком, я использовал пустую строку, чтобы ваша команда не читалась как единая. Также, если вы не можете быть уверены, что .EXE является записью значения в %PATHEXT%, вы должны включить это расширение .exe, то есть @Start "" "C:\Program Files (x86)\Microsoft Office\root\Office16\lync.exe".

В качестве заключительного примечания, как lync.exe - это продукт Microsoft Office, я вполне ожидаю, что его путь будет введен в реестр под HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\lync.exe. В этом случае вам вообще не нужно вводить его путь, и все, что нужно, будет следующее:

@lync


Для второго примера первое, что вы должны заметить из выводаиз start /? означает, что вы должны запускать исполняемый файл с его скриптом в качестве аргумента, а не запускать скрипт с исполняемым файлом в качестве аргумента.

Если ваша команда AHk не требует, чтобы ваш текущий каталог был еесобственные, должно хватить следующего:

@Start D:\.PortableApps\AutoHotkey_1.1.28.02\AutoHotkeyU64 D:\.PortableApps\AutoHotkey_1.1.28.02\notifier.ahk

Если в каких-либо из этих имен или путей есть пробелы или другие отравляющие символы, то лучше использовать более безопасный вариант в двойных кавычках, дополненный исполняемым расширением:

@Start "" "D:\.PortableApps\AutoHotkey_1.1.28.02\AutoHotkeyU64.exe" "D:\.PortableApps\AutoHotkey_1.1.28.02\notifier.ahk"

Если вам нужно изменить каталог, чтобы команда AHk работала правильно, тогда у вас есть два варианта в соответствии с предоставленными вами тестами:

@PushD D:\.PortableApps\AutoHotkey_1.1.28.02 
@Start AutoHotkeyU64 notifier.ahk
@PopD

Если вы не можетеубедитесь, что .EXE является записью значения в %PATHEXT%, вы должны включить это расширение .exe, то есть @Start AutoHotkeyU64.exe notifier.ahk. Кроме того, если в пути к каталогу в первой строке есть пробелы, его можно заключить в двойные кавычки, если этот путь отсутствует в файловой системе NTFS.

Для непосредственного использования параметра Start, аналогично первому примеру :

@Start /D D:\.PortableApps\AutoHotkey_1.1.28.02 D:\.PortableApps\AutoHotkey_1.1.28.02\AutoHotkeyU64 notifier.ahk

Если в каких-либо из этих имен или путей есть пробелы или другие отравляющие символы, то лучше использовать более безопасный вариант в двойных кавычках, дополненный исполняемым расширением:

@Start "" /D "D:\.PortableApps\AutoHotkey_1.1.28.02" "D:\.PortableApps\AutoHotkey_1.1.28.02\AutoHotkeyU64.exe" "notifier.ahk"


Во всех приведенных выше примерах команды были добавлены с @. Если ваш сценарий уже выключен echo, то вы можете опустить все эти предшествующие символы.
1 голос
/ 28 октября 2019

Когда вы запускаете cd /? из cmd, вы найдете этот раздел в разделе справки:

Используйте ключ / D для изменения текущего диска в дополнение к изменению текущего каталога для диска.

Поэтому вы должны использовать переключатель /d, когда c висит d каталогов, которые находятся на разных буквах дисков.

@echo off
cd /d "D:\.PortableApps\AutoHotkey_1.1.28.02\" 
start notifier.ahk AutoHotkeyU64.exe

В качестве альтернативы, используяpushd

@echo off
pushd "D:\.PortableApps\AutoHotkey_1.1.28.02\" 
start notifier.ahk AutoHotkeyU64.exe
popd

Или просто start (без неправильно реализованного /D, как в вашем примере).

start "" "D:\.PortableApps\AutoHotkey_1.1.28.02\notifier.ahk" "D:\.PortableApps\AutoHotkey_1.1.28.02\AutoHotkeyU64.exe"

В качестве альтернативы вы можете использовать pushd

или start /b без создания нового окна:

start /b "" "D:\.PortableApps\AutoHotkey_1.1.28.02\notifier.ahk" "D:\.PortableApps\AutoHotkey_1.1.28.02\AutoHotkeyU64.exe"

В качестве напоминания можно найти всю необходимую справку для вышеупомянутых команд, выполнив следующую команду из cmd.exe

cd /?
pushd /?
popd /?
start /?
...