【问题标题】:Start .exe with Batch file and several parameters使用批处理文件和几个参数启动 .exe
【发布时间】:2019-01-27 18:01:15
【问题描述】:

我需要启动一个程序并将几个参数交给 .exe,但不能让它与 .bat-File 一起使用。

我也尝试设置整个路径,包括“”中的参数,但没有帮助。

我的错误在哪里?如果使用

"C:\Program Files (x86)\Software\ameise.exe" --server=(local)\FILES --database=baset_1 --dbuser=sa --dbpass=asdasd+13da# --templateid=EXP6 --outputfile=C:\Users\Administrator\Documents\DATA.csv

在没有 if 条件的 .bat 文件中单独没有 start "" 命令,它工作得很好。 此外,if 条件仅适用于“回声测试”。 但是将程序行添加到条件中会使 CMD 窗口在 .bat 文件启动后立即关闭。

我的错误在哪里? 坦克你的帮助!

@echo off

set var1=1
set var2=1

IF %var1%==1 (
    start "" "C:\Program Files (x86)\Software\ameise.exe" --server=(local)\FILES --database=baset_1 --dbuser=sa --dbpass=asdasd+13da# --templateid=EXP6 --outputfile=C:\Users\Administrator\Documents\DATA.csv
)

IF %var2%==1 (
    echo test
)
Pause

【问题讨论】:

    标签: batch-file


    【解决方案1】:

    试试这个,看看它是否有效。

    @echo off
    
    set var1=1
    set var2=1
    
    if "%var1%" == "1" (
        "C:\Program Files (x86)\Software\ameise.exe" --server=^(local^)\FILES --database=baset_1 --dbuser=sa --dbpass=asdasd+13da# --templateid=EXP6 --outputfile=C:\Users\Administrator\Documents\DATA.csv
    )
    if "%var2%" == "1" (
        echo.Test
    )
    pause>nul
    

    【讨论】:

    • 这是错误的,你测试了吗? "1" 将如何等于 1
    • 我想我的答案已经过时了,因为你已经写了你的答案。对不起。
    • 不,不是,但与原来的变化不大,你的答案是错误的,你现在编辑了。
    • 您只需要转义--server=(local)\FILES ---> --server=(local^)\FILES 中的右括号,因为它与IF 块的括号冲突。包含Program Files (x86) 的字符串没有问题,因为它被引号包围;否则你的答案是正确的。这是 OP 在他们的问题中遇到问题的根本原因。
    【解决方案2】:

    让我们在运行单个命令时删除括号,尽管它们不会造成伤害。然后将 if 语句命令放在一行中。

    == 上使用equ 查看if /? 了解更多信息。此外,我总是用双引号将我的 if 变量括起来。以防一些可怕的空白在其中蔓延。

    所以请试试这个,未经测试,因为我没有你的命令可用:

    @echo off
    set var1=1
    set var2=1
    
    if "%var1%" equ "1" start "" /wait "C:\Program Files (x86)\Software\ameise.exe" --server=(local)\FILES --database=baset_1 --dbuser=sa --dbpass=asdasd+13da# --templateid=EXP6 --outputfile=C:\Users\Administrator\Documents\DATA.csv
    if "%var2%" equ "1" echo test
    Pause
    

    编辑,如果您希望它们按顺序添加/wait 到启动命令。请参阅上面的代码编辑。

    【讨论】:

    • 我的荣幸。很高兴它有帮助:)
    • 嘿 - 哇,这帮了大忙!谢谢,现在可以了!我对批处理脚本很陌生……现在我注意到打开了两个命令行窗口。一个显示.exe 工作,另一个只显示“按钮...”。没有回声通知。
    • 是因为你启动了程序。也许删除整个start "" /wait 部分并让它自己发出命令。
    • 太棒了!非常感谢!
    • 使用不带括号的IF,虽然在这种特殊情况下有效,但只是隐藏了问题的事实。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    • 2013-10-13
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 2017-08-13
    相关资源
    最近更新 更多