查看下面的批处理文件。如你所见,我是一个非常新手的脚本。但是,这是我正在努力实现的目标。
创建一个TEMP文件夹,将另一个文件夹及其内容从服务器复制到另一台服务器。然后复制文件夹内容,这很有效。但是第一个.exe的START让我需要回答2个问题。它们需要以1的按键回答,第二个问题需要输入0,然后AppRemover6.exe才会运行。我试过使用echo但是我遗漏了一些东西或语法不正确。
我还希望第一个exe在完成下一个exe之前完成。
对于reg文件,需要使用YES的答案(鼠标单击)自动回答Windows弹出窗口以更改注册表。
@ECHO OFF
MD -P C:\TEMP
XCOPY "\\mybigserver\Apps\AppCleanerUtils" C:\TEMP /E /I
START /D "C:\TEMP\AppCleanerUtil6" AppRemover6.exe
START /D "C:\TEMP\AppCleanerUtil6" PatchRegistry.reg
START /D "C:\TEMP\C:\TEMP\AppCleanerUtil5" AppRemover5.exe
RMDIR /S /Q "C:\TEMP\AppCleanerUtil6"
RMDIR /S /Q "C:\TEMP\AppCleanerUtil5"
如果有更好的方法可以做到这一点?
答案 0 :(得分:0)
许多问题因此在下次使用之前首先完成:
START /WAIT ...
用于将参数传递给您的应用程序尝试从此处获取空参数“”的建议:Using the "start" command with parameters passed to the started program
答案 1 :(得分:0)
-P
命令没有MD
开关。即使有,也不需要。 Windows已经有一个应该使用的TEMP
变量。
如果AppRemover6.exe
程序未从stdin读取,则将文件重定向到该文件将不起作用。 AppRemove6.exe
是否有任何命令行参数可以告诉它从文件读取输入?
尝试直接从cmd提示符开始工作。创建一个包含必须输入的两个项目的文件。
=== response.txt
0
1
AppRemover6.exe <response.txt
如果是我,我会做出这些改变。
@ECHO OFF
XCOPY "\\mybigserver\Apps\AppCleanerUtils" "%TEMP%" /E /I
START /WAIT /D "%TEMP%\AppCleanerUtil6" AppRemover6.exe
START /D "%TEMP%\AppCleanerUtil6" PatchRegistry.reg
START /D "%TEMP%\C:\TEMP\AppCleanerUtil5" AppRemover5.exe
RMDIR /S /Q "%TEMP%\AppCleanerUtil6"
RMDIR /S /Q "%TEMP%\AppCleanerUtil5"