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的错误代码 根据返回的错误代码,显示一条错误消息,说明 安装失

我可能做错了。以下是我试图做的:

  • 打开已创建的批处理文件(标记为:run office install.bat)

  • 调用一个安装批处理文件(标签为:install.bat)并针对它设置一个错误报告(当前使用的批处理文件与通常使用的批处理文件不同,如下所示) 它安装了office 2013,因此刚刚将另一个bat复制并重命名为 与测试相同)。我知道这个批处理文件是独立工作的,而且 使用GOTO:EOF和EXIT/B,它应该输出一个0或>1的错误代码

  • 根据返回的错误代码,显示一条错误消息,说明 安装失败或显示一条消息,显示安装失败 成功并删除安装包

  • 代码如下:

    运行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
    
    安装.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不会有删除检查。谢谢你的帮助。