2016-08-30 1 views
3

J'essaye d'exécuter un fichier batch distant. Je pourrais appeler le fichier batch en utilisant PsExec mais incapable de terminer en raison de : choix dans le fichier de commandes.Passage de Y/N lors de l'exécution d'un fichier chauve distant à partir de la ligne de commande

Voici l'extrait du fichier batch

:choice 
set /P c=Are you sure you want to continue [Y/N]? 
if /I "%c%" EQU "Y" goto :execute_script 
if /I "%c%" EQU "N" goto :END 
goto :choice 

qui peuplant question

enter image description here

Je veux traiter cette question de la commande qui ressemble à:

cmd /c start C:\temp\PSEXEC\PsExec.exe \\server -u username -p password cmd /c (^cd C:\BatchExecutors ^& SnapExecutor.bat location^) 

Suggestions appréciées. Merci d'avance.

+0

avez-vous la possibilité de modifier le fichier batch? Si oui, vous pouvez l'appeler avec un paramètre d'entrée supplémentaire afin de contourner la question si le paramètre d'entrée est défini. –

+0

Non. Nous ne sommes pas autorisés à modifier le fichier batch. –

+1

'cmd/c démarrer C: \ temp \ PSEXEC \ PsExec.exe \\ serveur -u nom d'utilisateur -p mot de passe cmd/c (^ cd C: \ BatchExecutors^& echo y^| SnapExecutor.bat emplacement ^)'? – npocmaka

Répondre

0

Vous pouvez utiliser un comportement CMD étrange lorsque 2 fichiers de commandes portent le même libellé pour ignorer la question. Mais tout code antérieur à la question serait ignoré.

Pour ce faire, créer un autre fichier de commandes avec ceci à l'intérieur:

call :execute_script 
    goto:eof 
    :execute_script 
    cd /D C:\BatchExecutors 
    SnapExecutor.bat %* 

Alors qu'est-ce qui se passe ici est que ce script appellera SnapExecutor.bat, mais au lieu de partir du début du script, il sera commencer à partir de: execute_script

Le problème est maintenant de savoir comment l'exécuter à distance. Vous pourriez être en mesure de créer ce script dans un dossier distant accessible en écriture en utilisant cette commande:

cmd /c start C:\temp\PSEXEC\PsExec.exe \\server -u username -p password cmd /c "cd /D c:\[temp folder] &echo call :execute_script>temp.bat &echo goto:eof>>temp.bat &echo :execute_script>>temp.bat &echo cd /D C:\BatchExecutors>>temp.bat &echo SnapExecutor.bat %%*>>temp.bat" 

(Cela va créer le fichier de commandes, puis utilisez-vous cela pour l'appeler:

cmd /c start C:\temp\PSEXEC\PsExec.exe \\server -u username -p password cmd /c "C:\[temp folder]\temp.bat" 

REMARQUE:

  • Change [dossier temp] dans un dossier accessible en écriture sur le PC distant.