运行 Citrix 清理工具时 CMD 崩溃且没有任何错误

运行 Citrix 清理工具时 CMD 崩溃且没有任何错误

我有一个 cmd 批处理文件来重置我的 Citrix 接收器:

@echo off

set /p Choice="Do you want to reset Citrix settings? (y/n)"
if (Choice==y) (goto :RESET) else (exit)

:RESET
start "Citrix reset tool" /b "C:\Program Files (x86)\Citrix\ICA Client\SelfServicePlugin\CleanUp.exe" /silent -cleanUser
if (%errorlevel%==0) (goto :SUCCESS)  else (goto :ERROR)

:SUCCESS
echo Citrix should be rested by now. You may close this window!
pause
exit

:ERROR
echo Citrix was not successfully reset. Please contact your IT department.
pause

它以前工作得很好。但今天我试了一下,它让终端崩溃了,没有任何错误消息。如果您能帮助我了解可能存在的问题以及如何解决这些问题,我将不胜感激。

答案1

我不熟悉这个特定的工具,但我建议 a) 从终端窗口启动批处理文件,而不仅仅是双击;b) 删除 /silent 开关。也许这样可以得到一些输出,这样你就可以找到问题的根源。

编辑:某处应该有一个 ReceiverLogs 文件夹。也许也可以检查一下。

答案2

您使用的语法不太正确IF- 删除条件周围的括号并使用变量的值。您当前的 IF 语句都执行 FALSE 条件(退出):

if %Choice%==y (echo yes) else (echo no)

start命令启动一个新进程,因此不会返回errorlevel子进程if SUCCESS/ERRORcall如果想要返回状态代码,请使用:

call "C:\Program Files (x86)\Citrix\ICA Client\SelfServicePlugin\CleanUp.exe" /silent -cleanUser
if %errorlevel%==0 (goto :SUCCESS)  else (goto :ERROR)

根据您启动 CMD 脚本的方式,使用exit可以关闭调用 CMD.EXE,因此使用以下命令结束 cmd 脚本通常更安全:

exit /b %errorlevel%

看到这个便捷指南

答案3

1.您可以使用choice来限制y/n(不敏感)

2.添加运算符&&(return 0) ||(return non 0)

3.哪个项目1.2.将不需要你的goto:lables

4./D您可以在启动命令中添加标志目录


@echo off 

choice /m "Do you want to reset Citrix settings?"
if not %errorlevel% == 1 goto=:EOF

start "Citrix reset tool" /b /d "C:\Program Files (x86)\Citrix\ICA Client\SelfServicePlugin" CleanUp.exe /silent -cleanUser

%__AppDir__%timeout.exe /t 3 /nobreak | echo\Checking the Status of Citrix/CleanUp tool, please wait...

%__AppDir__%tasklist.exe | >nul find/i "CleanUp.exe" && (
     %__AppDir__%timeout.exe -1 | echo=Citrix should be rested by now. You may close this window!
    ) || (
     %__AppDir__%timeout.exe -1 | echo=Citrix was not successfully reset. Please contact your IT department.
    )

相关内容