gpt4 book ai didi

batch-file - 如何从批处理文件中提取错误描述

转载 作者:行者123 更新时间:2023-12-03 08:54:27 24 4
gpt4 key购买 nike

我有这个批处理脚本:

@echo off
set server_list=C:\temp\servers.txt
set cab=E:\PHC\wsusscn2.cab
set sass=E:\PHC\SASS\sass.exe
erase c:\sass\error.log
for /f "tokens=1,2*" %%i in (%server_list%) do (
echo %%i
xcopy %cab% \\%%j\c$\sass /Y || echo %%i: ?error description (invalid drive specification, Access denied etc)? >> c:\sass\error.log
xcopy %sass% \\%%j\c$\sass /Y || echo %%i: ?error description (invalid drive specification, Access denied etc)? >> c:\sass\error.log
wmic /node:%%j PROCESS CALL CREATE "cmd /c c:\sass\sass.exe -i c:\sass\wsusscn2.cab -o c:\sass\%%i.csv" || echo %%i: ?error description (RPC server not available etc)? >> c:\sass\error.log
)
pause`

脚本工作正常,问题是,我无法将错误描述获取到error.log文件(在问号之间)。如果我知道的话,这将对为什么操作不成功有很大帮助。我尝试了以下方法:
echo %%i: cab file copy failed - %ERRORLEVEL%

但是它总是导致错误级别0(显然是echo命令的错误级别)。我尝试了几种将错误级别存储到变量的方法,但始终失败。此外,错误级别仅部分地提供了我想要的信息,而不是描述,而是错误的类型。

Servers.txt文件在第一列中包含服务器的主机名,在第二列中包含它们的IP。

如何提取错误描述?

最佳答案

通过使用STDERR解决了问题。这是疑问行的工作形式:

xcopy %cab% \\%%j\c$\sass /Y 2>> C:\SASS\error.log
xcopy %sass% \\%%j\c$\sass /Y 2>> C:\SASS\error.log
wmic /node:%%j PROCESS CALL CREATE "cmd /c c:\sass\sass.exe -i c:\sass\wsusscn2.cab -o c:\sass\%%i.csv" 2>> C:\SASS\error.log

这段代码准确地将我需要的内容输入到error.log文件中。由于此解决方案未声明服务器的主机名,因此我不得不将这些行添加到循环的开头:
echo ----------- >> C:\SASS\error.log
echo %%i >> C:\SASS\error.log

关于batch-file - 如何从批处理文件中提取错误描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31492702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com