Batch file 带有if-exist语句的批处理文件不工作
我有一个带有3组工作站的小型网络。我使用批处理文件按组推送第三方更新(按组推送文本文件中的工作站名称),我正试图为此回收这些更新。我想安装应用程序,但仅在安装了Outlook 2016的情况下。在阅读“if”的帮助文件时,我想我可以添加一个“if exist'filename'goto end”,但它不起作用。它似乎完全跳过了“如果存在”这一行,在有或没有Outlook 2016的情况下安装应用程序。我错过了什么Batch file 带有if-exist语句的批处理文件不工作,batch-file,if-statement,Batch File,If Statement,我有一个带有3组工作站的小型网络。我使用批处理文件按组推送第三方更新(按组推送文本文件中的工作站名称),我正试图为此回收这些更新。我想安装应用程序,但仅在安装了Outlook 2016的情况下。在阅读“if”的帮助文件时,我想我可以添加一个“if exist'filename'goto end”,但它不起作用。它似乎完全跳过了“如果存在”这一行,在有或没有Outlook 2016的情况下安装应用程序。我错过了什么 @ECHO OFF SET /P GroupName= FOR /F %%A IN
@ECHO OFF
SET /P GroupName=
FOR /F %%A IN (\\server\share\admin\workingfolder\update\groups\%groupname%.txt) DO (
IF EXIST "\\%%A\c$\program files (x86)\Microsoft Office\Office16\Outlook.exe" GOTO END
xcopy /e /q "\\server\share\admin\software\application" "\\%%A\c$\temp\application\"
psexec cmd "\\%%A\temp\application\application.msi"
rmdir /s /q "\\%%A\c$\temp\application\"
)
exit
:END
ECHO "Outlook 2016 was not detected, application not installed > "\\server\share\admin\software\application\install logs\%%a.txt"
exit
你有两个问题:
1) 您的描述与代码不符。您的代码将仅在outlook.exe不存在时安装
2) GOTO
将断开任何块,也将断开FOR块
解决方案:不要在块中使用GOTO
FOR /F %%A IN (\\server\groupname.txt) DO (
echo Processing %%A
IF EXIST "\\%%A\c$\program files (x86)\Microsoft Office\Office16\Outlook.exe" (
xcopy /e /q "\\server\application" "\\%%A\c$\temp\application\"
) ELSE (
ECHO "Outlook 2016 was not detected, application not installed
)
)
尝试删除
@ECHO OFF
行,然后查看打印出的内容。它是否显示了您对行(如果存在)的期望值?