【发布时间】:2015-07-18 15:31:17
【问题描述】:
我有这个批处理脚本:
@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 命令的错误级别)。我尝试了几种方法将错误级别存储到变量中,但总是不成功。此外,errorlevel 只提供了我想要的部分内容,而不是描述,而只是错误的类型。
文件 Servers.txt 在一列中包含服务器的主机名,在第二列中包含它们的 IP。
如何提取错误描述?
【问题讨论】:
-
你试过用
2>>errorlog.txt捕获STDERR吗? -
看起来可行,谢谢。奇怪的是,它早上没有工作,但到了下午,没有对文件进行任何修改,它确实工作正常:-)