Windows 基于批处理文件执行的问题处理
我可能做错了。以下是我试图做的:Windows 基于批处理文件执行的问题处理,windows,batch-file,cmd,Windows,Batch File,Cmd,我可能做错了。以下是我试图做的: 打开已创建的批处理文件(标记为:run office install.bat) 调用一个安装批处理文件(标签为:install.bat)并针对它设置一个错误报告(当前使用的批处理文件与通常使用的批处理文件不同,如下所示) 它安装了office 2013,因此刚刚将另一个bat复制并重命名为 与测试相同)。我知道这个批处理文件是独立工作的,而且 使用GOTO:EOF和EXIT/B,它应该输出一个0或>1的错误代码 根据返回的错误代码,显示一条错误消息,说明 安装失
CD "C:\source\Microsoft_Office_2013_01"
CALL install.bat 2> InstallCommand.err
FOR /F "usebackq" %%A IN ('InstallCommand.err') DO set size=%%~zA
IF NOT "%size%"=="0" (
ECHO Error installing MS Office 2013. Please check the log files.
TYPE InstallCommand.err
GOTO:EOF
)
IF "%size%"=="0" (
ECHO MS Office 2013 installed, now deleting install folders...
TYPE InstallCommand.err
RMDIR /s /q "C:\source\Microsoft_Office_2013_01" 2> delCmd.err
OR /F "usebackq" %%A IN ('delCmd.err') DO set size=%%~zA
if not "%size%"=="0" (
ECHO Error deleting install folders
TYPE delCmd.err
)
IF "%size%"=="0" (
ECHO install folders deleted successfully
TYPE delCmd.err
)
)
PAUSE
EXIT
@ECHO OFF
:delete
ECHO Deleting OffScrub10.vbs
CD c:\temp
DEL /f /q c:\temp\OffScrub10.vbs 2> delCmd.err
FOR /F "usebackq" %%A IN ('delCmd.err') DO set size=%%~zA
IF NOT "%size%"=="0" (
ECHO Error deleting OffScrub10.vbs
TYPE delCmd.err
GOTO :EOF
)
IF "%size%"=="0" (
ECHO OffScrub10.vbs deleted successfully
TYPE delCmd.err
)
PAUSE
EXIT /B
安装.bat
CD "C:\source\Microsoft_Office_2013_01"
CALL install.bat 2> InstallCommand.err
FOR /F "usebackq" %%A IN ('InstallCommand.err') DO set size=%%~zA
IF NOT "%size%"=="0" (
ECHO Error installing MS Office 2013. Please check the log files.
TYPE InstallCommand.err
GOTO:EOF
)
IF "%size%"=="0" (
ECHO MS Office 2013 installed, now deleting install folders...
TYPE InstallCommand.err
RMDIR /s /q "C:\source\Microsoft_Office_2013_01" 2> delCmd.err
OR /F "usebackq" %%A IN ('delCmd.err') DO set size=%%~zA
if not "%size%"=="0" (
ECHO Error deleting install folders
TYPE delCmd.err
)
IF "%size%"=="0" (
ECHO install folders deleted successfully
TYPE delCmd.err
)
)
PAUSE
EXIT
@ECHO OFF
:delete
ECHO Deleting OffScrub10.vbs
CD c:\temp
DEL /f /q c:\temp\OffScrub10.vbs 2> delCmd.err
FOR /F "usebackq" %%A IN ('delCmd.err') DO set size=%%~zA
IF NOT "%size%"=="0" (
ECHO Error deleting OffScrub10.vbs
TYPE delCmd.err
GOTO :EOF
)
IF "%size%"=="0" (
ECHO OffScrub10.vbs deleted successfully
TYPE delCmd.err
)
PAUSE
EXIT /B
任何帮助都将不胜感激。这是两个文件的修改版本。我已尝试将它们与您发布的内容保持相似,以便您仍然可以跟踪它们: 运行office安装.bat
CD "C:\source\Microsoft_Office_2013_01"
CALL install.bat 2> InstallCommand.err
FOR /F "usebackq" %%A IN ('InstallCommand.err') DO set size=%%~zA
IF NOT "%size%"=="0" (
ECHO Error installing MS Office 2013. Please check the log files.
TYPE InstallCommand.err
GOTO:EOF
)
IF "%size%"=="0" (
ECHO MS Office 2013 installed, now deleting install folders...
TYPE InstallCommand.err
RMDIR /s /q "C:\source\Microsoft_Office_2013_01" 2> delCmd.err
OR /F "usebackq" %%A IN ('delCmd.err') DO set size=%%~zA
if not "%size%"=="0" (
ECHO Error deleting install folders
TYPE delCmd.err
)
IF "%size%"=="0" (
ECHO install folders deleted successfully
TYPE delCmd.err
)
)
PAUSE
EXIT
@ECHO OFF
:delete
ECHO Deleting OffScrub10.vbs
CD c:\temp
DEL /f /q c:\temp\OffScrub10.vbs 2> delCmd.err
FOR /F "usebackq" %%A IN ('delCmd.err') DO set size=%%~zA
IF NOT "%size%"=="0" (
ECHO Error deleting OffScrub10.vbs
TYPE delCmd.err
GOTO :EOF
)
IF "%size%"=="0" (
ECHO OffScrub10.vbs deleted successfully
TYPE delCmd.err
)
PAUSE
EXIT /B
@ECHO关闭
如果/I不是“%\uuuuu CD\uuuuuu%”,则=C:\source\Microsoft\u Office\u 2013\u 01”(
PUSHD“C:\source\Microsoft_Office_2013_01”2>NUL | |退出/B)
调用“install.bat”1>NUL2>%TEMP%\InstallCommand.err
对于(“%TEMP%\InstallCommand.err”)中的%%A,请设置“大小=%%~zA”
如果%size%NEQ为0(
ECHO=安装MS Office 2013时出错。请检查日志文件。
键入“%TEMP%\InstallCommand.err”
)否则(
ECHO=MS Office 2013已安装,正在删除安装文件夹。。。
PUSHD“%TEMP%”
RD/S/Q“C:\source\Microsoft\u Office\u 2013\u 01”1>NUL 2>“delCmd.err”
对于“%delCmd.err”中的%%A,请设置“size=%%~zA”
如果%size%NEQ 0(ECHO=删除安装文件夹时出错
键入“delCmd.err”)ELSE(ECHO=已成功删除安装文件夹)
)
超时-1
退出/B
安装.bat
CD "C:\source\Microsoft_Office_2013_01"
CALL install.bat 2> InstallCommand.err
FOR /F "usebackq" %%A IN ('InstallCommand.err') DO set size=%%~zA
IF NOT "%size%"=="0" (
ECHO Error installing MS Office 2013. Please check the log files.
TYPE InstallCommand.err
GOTO:EOF
)
IF "%size%"=="0" (
ECHO MS Office 2013 installed, now deleting install folders...
TYPE InstallCommand.err
RMDIR /s /q "C:\source\Microsoft_Office_2013_01" 2> delCmd.err
OR /F "usebackq" %%A IN ('delCmd.err') DO set size=%%~zA
if not "%size%"=="0" (
ECHO Error deleting install folders
TYPE delCmd.err
)
IF "%size%"=="0" (
ECHO install folders deleted successfully
TYPE delCmd.err
)
)
PAUSE
EXIT
@ECHO OFF
:delete
ECHO Deleting OffScrub10.vbs
CD c:\temp
DEL /f /q c:\temp\OffScrub10.vbs 2> delCmd.err
FOR /F "usebackq" %%A IN ('delCmd.err') DO set size=%%~zA
IF NOT "%size%"=="0" (
ECHO Error deleting OffScrub10.vbs
TYPE delCmd.err
GOTO :EOF
)
IF "%size%"=="0" (
ECHO OffScrub10.vbs deleted successfully
TYPE delCmd.err
)
PAUSE
EXIT /B
@ECHO关闭
如果/I不是“%\uuuuu CD\uuuu%”==“C:\temp\”(按“C:\temp”2>NUL | |退出/B)其他(设置“\uuU=T”)
ECHO=删除OffScrub10.vbs
DEL/A/F“OffScrub10.vbs”1>num2>%TEMP%\delCmd.err
对于(“%TEMP%\dellcmd.err”)中的%%A,请设置“大小=%%~zA”
如果%size%NEQ 0(ECHO=删除OffScrub10.vbs时出错
键入“%TEMP%\delCmd.err”)或其他(ECHO=OffScrub10.vbs已成功删除)
超时-1
如果未定义uud
退出/B
您还需要注意,
运行office install.bat
不能从C:\source\Microsoft\u office\u 2013\u 01
运行,否则您将试图在它仍在运行时删除它您至少应该告诉人们它正在做什么,以及您期望/希望它做什么。另外,第一批文件的大致中间行应该是FOR
而不是或。对不起,应该是拼写错误。我确实在顶部描述了我希望它做什么,但是会在Bat文件中添加一些注释。与其说你希望它做什么,不如说它做什么。。。它会立即死亡吗?它是否运行安装程序但未检测其是否工作?您收到了什么输出/错误消息?很抱歉,我已经找出了错误的地方,最初是由于CD c:\temp它将错误文件保存在错误的位置,因此主脚本正在那里查找它,说明找不到它来进行大小检查。该问题现已得到解决,但它现在将.err文件保留在其继续尝试删除的目录(C:\source\Microsoft\u Office\u 2013\u 01)中,因此无法完成。如果我用另一个bat进行测试,希望它能满足需要,因为将要使用的安装bat不会有删除检查。谢谢你的帮助。