从批处理文件窗口中打开程序中的文件

时间:2019-10-28 09:06:46

标签: batch-file cmd

我有一个批处理文件,可以按需打开(不启动)一堆程序

例如

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 个答案:

答案 0 :(得分:1)

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 /?

答案 1 :(得分:1)

我首先建议您打开“命令提示符”窗口,然后输入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,则可以省略所有这些前置字符。