我尝试远程部署某些软件,并且我有一些批处理脚本来帮助完成此过程。我的流程的基础是拥有scriptA
经过的文本列表,scriptA
将必要的文件复制到目标PC(从列表中检索)并启动ScriptB
。然后理论是,一旦ScriptB启动它就会转移到列表中的下一台PC,并且在继续前进之前不会等待ScriptB完成。我所拥有的基础知识如下:
ScriptA
:
Set /P List= Please enter the list name
Set /P Name= Please enter your username
FOR /F %%A IN (%LIST%) DO (
MKDIR \\%%A\C$\Temp\Install
XCOPY "\\share\necessary files" "\\%%A\C$\Temp\Install"
PSEXEC \\%%A -u DOMAIN\%NAME% -e "\\%%A\C$\Temp\Install\scriptB.bat"
)
ScriptB
只需运行安装程序并自行清理。
就像我说的那样,目标是一旦scriptA
完成文件的复制并开始启动,它就会转移到列表中的下一台PC上。我已经确认现在一切正常(所以请忽略任何在上面的伪代码中不起作用的随机事物)它只需要永远,因为它等待安装完成后再继续。
编辑:
我意识到我将错误的文件显示为被复制。最初被列为' install.bat'应该是scriptB。我很抱歉,因为我很难描述这个问题,所以很难设法解决我的问题。
Per Request,以下是我使用start的方式:
SCRIPTA:
START PSECEC \\%%A -u DOMAIN\%NAME% -e "\\%%A\C$\Temp\Install\ScriptB.bat"
它可以在一个新窗口中启动ScriptB,但我真正想要的最终产品是:
我希望这有助于澄清事情,我再次为这种困惑道歉。我已经按照上面列出的所有步骤工作,我希望,唯一不起作用的是我无法启动scriptA来启动scriptB而不会暂停scriptA以等待scriptB完成以及我是什么我想要发生的事情就是它继续前进而不等待(这样我就可以在一天结束时启动这个脚本,它会在晚上继续安装,直到它完成PC列表)。
再次感谢您的帮助!
答案 0 :(得分:0)
您可以使用START
命令启动命令,而无需等待它继续运行。请注意,这将在新创建的命令提示符中执行指定的命令,而不是在同一命令提示符进程中执行。
请注意,如果可执行文件/批处理文件的路径包含空格,则必须将空字符串参数指定为第一个参数。例如:
START "" "C:\Path with spaces\My other script.bat"
这是因为如果第一个参数被引号括起来,则它被认为是为执行新进程而启动的新命令提示符的标题。指定一个空参数(或者您想要使用的标题)将解决这种情况。
答案 1 :(得分:0)
我们越远离实际问题,我们就越不能提供帮助。问题越普遍,反应越模糊。
我们毫无意义地从“ScriptB”映射到“Install.bat”,并且您声称已经添加了启动命令,但没有向我们显示您使用它的位置。
使用原始脚本,更改
PSEXEC \\%%A -u DOMAIN\%NAME% -e "\\%%A\C$\Temp\Install.bat"
到
start "installing on %%A" PSEXEC \\%%A -u DOMAIN\%NAME% -e "\\%%A\C$\Temp\Install.bat"
应该解决问题 - 但不能保证。