我有一个批处理文件只能打开两个不同文件中的一个,即:
如果客户安装了*_en.exe
,我需要启动.exe
个文件:
start C:\TeamViewerQS_de.exe
if not exist C:\TeamViewerQS_de.exe goto :EN
:EN
start C:\TeamViewerQS_en.exe
我收到Windows无法找到TeamViewerQS_ en .exe的错误,我的电脑上存在_ de .exe版本。 有没有更好的方法来批量区分文件名?
答案 0 :(得分:0)
start C:\TeamViewerQS_de.exe
IF not exist C:\TeamViewerQS_de.exe goto :EN
:: goto :eof also can be used instead of exit
exit /b 0
:EN
start C:\TeamViewerQS_en.exe
您需要退出子句,标签(以:
开头的行)将被忽略,并且start C:\TeamViewerQS_en.exe
将被执行。
你也可以这样做:
start C:\TeamViewerQS_de.exe 2>nul || start C:\TeamViewerQS_en.exe
答案 1 :(得分:0)
这是因为,如果TeamViewerQS_de.exe
版本存在,则没有条件绕过使TeamViewerQS_en.exe
版本运行的语句。然后,您可以在else
条件中添加if not exist
块以跳过启动英语版本的语句。
这是一个工作脚本,其编辑包含在起始块之前的条件分支和其他goto
语句中:
if exist C:\TeamViewerQS_de.exe goto :DE else goto :EN
:DE
start C:\TeamViewerQS_de.exe
goto :EOF
:EN
start C:\TeamViewerQS_en.exe
:EOF
echo Task accomplished
pause
这样ERRORLEVEL
应该保留0级的所有任务;如果此脚本包含在另一个脚本中,这也可能非常有用,这使得其他操作也可以使用该变量。