Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.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
调用C#程序后的批处理文件错误处理_C#_Batch File - Fatal编程技术网

调用C#程序后的批处理文件错误处理

调用C#程序后的批处理文件错误处理,c#,batch-file,C#,Batch File,我有一个批处理文件,它调用C#程序。此C#程序调用SQL Server数据库。 有时它无法连接到数据库,异常处理程序打印堆栈跟踪并退出c#程序。我想尝试运行这个程序最多5次。 如果成功(在5次尝试之前),则转到下一步(检查状态),否则出错并退出 当我运行这个程序时,它将%ERRORLEVEL%打印为零,即使C#程序有错误 @ECHO OFF SET Header=----------------------------------------------------- SET Logfile=

我有一个批处理文件,它调用C#程序。此C#程序调用SQL Server数据库。 有时它无法连接到数据库,异常处理程序打印堆栈跟踪并退出c#程序。我想尝试运行这个程序最多5次。 如果成功(在5次尝试之前),则转到下一步(检查状态),否则出错并退出

当我运行这个程序时,它将%ERRORLEVEL%打印为零,即使C#程序有错误

@ECHO OFF

SET Header=-----------------------------------------------------
SET Logfile=C:\LOG\log.txt
set %ERRORLEVEL% = 0

echo %header%
ECHO Running the batch file >> %Logfile%

if '%1' == '' goto usage
if '%2' == '' goto usage
if '%1' == '/?' goto usage
if '%1' == '-?' goto usage
if '%1' == '?' goto usage
if '%1' == '/help' goto usage


SET SQLServer=dbsql\production
SET SQLUser=user1
SET SQLPass=pwd1
SET SQLCommandMaster=osql -S%SQLServer% -n -U%SQLUser% -P%SQLPass% -b -i


GOTO %1%
:Start
Set count=0

:RunCSharpProgram
set /a count+=1
ECHO starting RunCSharpProgram count >> %Logfile%
timeout /t 10
SET RunningStep="RunCSharpProgram"
start "" "C:\CSharpProject\GetData\GetData\bin\Debug\GetData.exe"
ECHO %ERRORLEVEL% >> %Logfile%
IF %ERRORLEVEL% ==1 and count LEQ 5 (GOTO RunCSharpProgram)
IF %ERRORLEVEL% ==1 and count EQ 5 (GOTO error)
IF %ERRORLEVEL% ==0 (GOTO CheckStatus)

:CheckStatus
ECHO Check Status of tables >> %Logfile%
REM %SQLCOMMANDMASTER% /Q "EXEC TestDB.dbo.CheckStatus"
goto end

:usage
echo Usage: %0  'start step' 'end step'
goto end

:error
REM ---------------------------------------------------------------------
ECHO ERROR RUNNING BatchFileTest.BAT >> %Logfile%


:end
echo %header% >> %Logfile%
echo END >> %Logfile%
不确定此批处理文件有什么问题。 谢谢
MR

当您使用
start
时,它将启动一个新的shell来运行您的程序

启动单独的命令提示符窗口以运行指定的程序或命令

由于它是一个独立的命令提示符,因此您将不获取错误代码。所以,简单的解决方案不使用启动

而不是

start "" "C:\CSharpProject\GetData\GetData\bin\Debug\GetData.exe"
你可以用

"C:\CSharpProject\GetData\GetData\bin\Debug\GetData.exe"

可能重复的可能重复的两者都不回答我的问题,我正在尝试从批处理文件调用.NET程序。不要使用
start
,这不会等待您的程序完成。