我想在批处理文件中执行两项任务。首先,我使用c#中的一个小应用程序创建一个文件,如果文件创建成功完成,该应用程序将返回一些值。然后根据任务的输出,我想执行robocopy操作。我需要一些帮助来保持第一次操作的输出,然后再用它来进行第二次操作。
xyz.exe
if outputofxyz=="OK" Robocopy "\\Directory1" "Directory2"
我想知道我可以在某些变量中保存xyz.exe的输出吗?或者我应该使用以下语法:
if xyz.exe=="OK" Robocopy "\\Directory1" "Directory2"
答案 0 :(得分:1)
好的,你可以做的最好的事情就是修改你的程序,这样就不用返回你使用的值Console.WriteLine();
来宣布这份工作是否成功:
// Do work
if (completed)
Console.WriteLine("OK");
else
Console.WriteLine("Fail");
// Note don't output anything else to the Console.
// Rest Of code
Program.exe > Out.txt
set /p out=<Out.txt
del Out.txt
if "%out%" EQU "OK" (
Robocopy "\\Directory1" "Directory2"
) Else (
Echo Task not Complete.
)
Exit
这应该做你想要的,但限制你输出任何其他东西到控制台。当然,如果你必须这样做,你可以输出数据作为文件的最后一行并使用for /f
。最后,您可以使用环境变量errorlevel
,但这需要您向我们展示您的修改代码。
莫纳。
答案 1 :(得分:0)
for /f "delims=" %%a in ('MyProgram') do set "output=%%~a"
robocopy [sourcefolder] [targetfolder] [files] %output%