如何使用一个操作的输出作为批处理文件中其他操作的输入?

时间:2013-11-29 15:28:19

标签: batch-file

我想在批处理文件中执行两项任务。首先,我使用c#中的一个小应用程序创建一个文件,如果文件创建成功完成,该应用程序将返回一些值。然后根据任务的输出,我想执行robocopy操作。我需要一些帮助来保持第一次操作的输出,然后再用它来进行第二次操作。

xyz.exe
if outputofxyz=="OK" Robocopy "\\Directory1" "Directory2" 

我想知道我可以在某些变量中保存xyz.exe的输出吗?或者我应该使用以下语法:

if xyz.exe=="OK" Robocopy "\\Directory1" "Directory2" 

2 个答案:

答案 0 :(得分:1)

好的,你可以做的最好的事情就是修改你的程序,这样就不用返回你使用的值Console.WriteLine();来宣布这份工作是否成功:

Program.cs的

// Do work
if (completed)
    Console.WriteLine("OK");
else
    Console.WriteLine("Fail");
// Note don't output anything else to the Console.
// Rest Of code

Main.bat

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%