从命令行执行远程bat文件时传递Y / N.

时间:2016-08-30 16:27:59

标签: windows batch-file batch-processing psexec

我正在尝试执行远程批处理文件。我可以使用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

填充问题

enter image description here

我想从命令处理这个问题,如:

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

建议表示赞赏。在此先感谢。

1 个答案:

答案 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"

注意:

  • 将[temp folder]更改为远程PC上的可写文件夹。