Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file Errorlevel检查在批处理文件中不起作用_Batch File_Errorlevel - Fatal编程技术网

Batch file Errorlevel检查在批处理文件中不起作用

Batch file Errorlevel检查在批处理文件中不起作用,batch-file,errorlevel,Batch File,Errorlevel,在下面的代码中,errorlevel检查永远不起作用。因此,如果发生故障,则不会发出电子邮件。Powershell命令正确且在此构造之外工作。我还尝试了直接检查:如果%ERRORLEVEL%NEQ 0 但这也不行 有什么想法吗?谢谢 @echo off set day=-1 echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s) echo>>"%temp%\%~n0.vbs" WScript.Echo ye

在下面的代码中,errorlevel检查永远不起作用。因此,如果发生故障,则不会发出电子邮件。Powershell命令正确且在此构造之外工作。我还尝试了直接检查:如果%ERRORLEVEL%NEQ 0

但这也不行

有什么想法吗?谢谢

@echo off
set day=-1
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^&            right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "YYYY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "dt=%mm%-%dd%-%yyyy%"

"LogParser.exe" "SELECT * INTO tblIisLog FROM \\iislogs\%dt%\*.log" -i:iisw3c -o:SQL -    oConnString:"Driver=SQL Server;Server=servername; Database=IISDB;Trusted_Connection=yes" -    createTable:ON
SET /a RC=%ERRORLEVEL%

IF %RC% NEQ 0
(

   powershell.exe -executionpolicy unrestricted -command "send-mailmessage -from     'me@abc.com' -to 'me@abc.com' -subject 'test' -body 'testing' -smtpServer 'smtpserv.com'"

)

假设LogParser.exe确实返回了errorlevel,这应该可以工作,并且更简洁地引导:

LogParser.exe "SELECT blah, blah, blah..."
if errorlevel 1 powershell.exe -executionpolicy ...

我读过一篇关于logparser的文章,其中声称它确实在出错时返回了errorlevel非零

我怀疑用户变量errorlevel被赋值了。而如果错误级别为1。。。如果errorlevel构造在实际的errorlevel上运行,则任何使用%errorlevel%的方法都会首先检查用户集变量。将任何值赋给errorlevel或其好友日期、时间、随机值等都可能导致此类意外结果,但在调试时非常有用-您可以将其中一个变量设置为已知值

测试这一理论的最简单的2秒钟方法是简单地包括这条线,这条线可能是治愈的,也可能不是治愈的

set "errorlevel="

就在logparser调用之前。比任何技术分析和论证都要快得多。

左栏必须在同一条IF行中:如果%RC%NEQ 0是,这就行了!!谢谢。问题是我想它是的,因为我把它打印成一个文本文件,它是54。我试试你说的。啊,还有语法错误。尽管如此,我还是要把它作为这些问题的陪衬。