通过批处理脚本执行参数化的.exe文件(Windows命令行)

时间:2014-12-09 13:12:23

标签: windows batch-file command-line command-line-arguments

我试图通过Windows上的命令行脚本(批处理文件)执行.exe文件。实际上我的脚本在执行文件之前做了很多事情(生成XML配置文件等),但是,这些部分工作得很好,所以我将专注于脚本的非工作部分。

我认为执行.exe文件的命令中的空格可能是错误的来源。但是,当用" "封闭该行时,它仍然无法正常工作。

回显该行仅适用于" "所包含的行(这就是为什么我猜这些空格或者某些特殊字符或某些东西会导致这个问题?)。它回显的路径是正确的(通过复制和粘贴到资源管理器中检查。应用程序正确启动)。

以下是错误消息:the filename directory name or volume label syntax is incorrect

相关代码提取:

    rem Start .exe file with parameters
    @echo off
    setlocal

    rem List of keydates
    set "list=20131231 20121231 20111231 20101231"
    set "appPath=C:\Program Files (x86)\xxx\yyy\"
    set "configPath=C:\Users\username\Desktop\batch test\"
    rem [...] more vars here

    for %%i in (%list%) do (
    (

    rem [...] 
    rem Generation of XML file, works just fine
    rem [...]

    )>BatchConfigTest_%%i.xml
    rem Batch file is located in config path, this is why I define no explicit path here
     )


    rem Problem is located here
    rem How do I execute the exe correctly? This approach doesn't work
    for %%i in (%list%) do (

    %appPath%ApplicationXYZ.exe -xmlcommandconfig:"%configPath%BatchConfigTest_%%i.xml

    rem echo "%appPath%ApplicationXYZ.exe -xmlcommandconfig:"%configPath%BatchConfigTest_%%i.xml""
    rem Echo shows correct paths. Copying the paths from the command line and pasting them into the explorer works.

    )

    pause

1 个答案:

答案 0 :(得分:3)

问题出现在这一行:

%appPath%ApplicationXYZ.exe -xmlcommandconfig:"%configPath%BatchConfigTest_%%i.xml

这将扩展为C:\Program Files (x86)\xxx\yyy\ApplicationXYZ.exe(无引号),因此C:\Program将尝试执行(不存在)。此外,配置XML文件缺少结束语。

尝试将以上行更新为:

"%appPath%ApplicationXYZ.exe" -xmlcommandconfig:"%configPath%BatchConfigTest_%%i.xml"

通过在EXE路径周围放置引号,它将扩展为"C:\Program Files (x86)\xxx\yyy\ApplicationXYZ.exe"(带引号),因此应该正确拾取它。另外,我最后在XML路径中添加了一个结束语。