我正在尝试执行远程批处理文件。我可以使用PsExec调用批处理文件,但由于批处理文件中的:choice 而无法完成。
以下是批处理文件的片段
: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
填充问题
我想从命令处理这个问题,如:
cmd /c start C:\temp\PSEXEC\PsExec.exe \\server -u username -p password cmd /c (^cd C:\BatchExecutors ^& SnapExecutor.bat location^)
建议表示赞赏。在此先感谢。
答案 0 :(得分:0)
当2个批处理文件具有相同标签时,您可以使用奇怪的CMD行为来绕过问题。但是问题之前的任何代码都会被忽略。
要执行此操作,请使用以下内容创建另一个批处理文件:
call :execute_script
goto:eof
:execute_script
cd /D C:\BatchExecutors
SnapExecutor.bat %*
所以这里发生的是这个脚本将调用SnapExecutor.bat,但它不是从脚本的开头开始,而是从以下开始:execute_script
现在的问题是如何远程执行此操作。您可以使用以下命令在远程可写文件夹中创建此脚本:
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"
(这将创建批处理文件,然后使用它来调用它:
cmd /c start C:\temp\PSEXEC\PsExec.exe \\server -u username -p password cmd /c "C:\[temp folder]\temp.bat"
注意: