1 votes

CMD se bloque sans aucune erreur lors de l'exécution de l'outil de nettoyage de Citrix.

J'ai utilisé un fichier batch cmd pour réinitialiser mon récepteur 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

Ça marchait très bien avant. Mais aujourd'hui, j'ai essayé et le terminal s'est bloqué sans aucun message d'erreur. J'apprécierais si vous pouviez m'aider à savoir quels sont les problèmes possibles et comment je peux les résoudre.

1voto

Je ne suis pas familier avec cet outil spécifique, mais je vous suggère a) de lancer le fichier batch à partir d'une fenêtre de terminal et pas simplement en double-cliquant et b) de supprimer le commutateur /silent. Vous obtiendrez peut-être des résultats qui vous permettront d'aller au fond des choses.

Edit : Il devrait y avoir un dossier ReceiverLogs quelque part. Vérifiez-le aussi.

1voto

DuncG Points 439

Vous n'avez pas tout à fait utilisé le bon IF syntaxe - laissez tomber les parenthèses autour des conditions et utilisez la valeur des variables. Vos instructions IF actuelles exécutent toutes deux la condition FALSE (sortie) :

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

El start La commande lance un nouveau processus et ne retourne donc pas errorlevel du sous-processus pour if SUCCESS/ERROR . Utilisez call si vous voulez récupérer le code d'état :

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

En fonction de la façon dont vous lancez votre script CMD, l'utilisation de la fonction exit peut fermer le CMD.EXE appelant donc il est généralement plus sûr de terminer cmd scripts avec :

exit /b %errorlevel%

Voir ceci guide pratique

1voto

iTwasnTme Points 5586

1. Vous pouvez utiliser choice pour limiter y/n (insensible)

2. Ajouter les opérateurs &&(return 0) ||(return non 0)

3. Quel élément 1. y 2. Cela vous permettra de ne pas avoir besoin de votre goto:lables

4. Vous pouvez ajouter le drapeau /D irectory dans votre commande de démarrage


@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.
    )

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X