Batch file 使用批处理文件和几个参数启动.exe

Batch file 使用批处理文件和几个参数启动.exe,batch-file,Batch File,我需要启动一个程序并将几个参数交给.exe,但不能让它使用.bat文件 我还尝试在“”中设置包含参数的整个路径,但没有帮助 我的错在哪里?如果使用 "C:\Program Files (x86)\Software\ameise.exe" --server=(local)\FILES --database=baset_1 --dbuser=sa --dbpass=asdasd+13da# --templateid=EXP6 --outputfile=C:\Users\Administrator\D

我需要启动一个程序并将几个参数交给.exe,但不能让它使用.bat文件

我还尝试在“”中设置包含参数的整个路径,但没有帮助

我的错在哪里?如果使用

"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

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

使用
eq
over
=
查看
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
添加到start命令。请参见上面的代码编辑

试试这个,看看是否有效

@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

我的荣幸。很高兴它有帮助:)嘿-哇,那帮了大忙!谢谢,现在它工作了!我对批处理脚本非常陌生。。。现在我注意到有两个命令行窗口打开了。一个显示.exe正在工作,另一个仅显示“按钮…”。没有回音通知。这是因为你启动了程序。也许可以删除整个
start”“/wait
部分,让它自己发出命令。太棒了!非常感谢你!如果使用不带括号的
IF
,虽然在这种特殊情况下有效,但只会隐藏问题的事实。这是错误的,您甚至测试过它吗?
“1”
如何等于
1
我想我的答案已经过时了,因为你已经写了你的答案。抱歉。不是,但与原始答案相比没有太大变化,您的答案是错误的,您现在编辑了。您只需在
--server=(local)\FILES
-->--server=(local^)\FILES中退出结束部分,因为它与
IF
块的括号冲突。包含
程序文件(x86)
的字符串没有问题,因为它被引号包围;否则你的答案是正确的。这是OP在他们的问题中遇到的问题的根本原因。