将批处理脚本中的.exe输出重定向到txt文件

时间:2014-12-25 14:39:29

标签: batch-file output exe redirect

我正在尝试将从批处理文件中调用的exe(commanline exe)的输出重定向到日志文件。在这个script中,input.txt中提供的主机名的IP地址被重定向到result.txt。我试图在同一个批处理脚本中运行.exe,以便在我的监视工具中将这些IP置于维护模式。脚本运行正常并按预期执行操作但无法捕获.exe的输出。请帮忙。

@echo off
setlocal enabledelayedexpansion
set OUTPUT_FILE=result.txt
>nul copy nul %OUTPUT_FILE%
for /f %%i in (input.txt) do (
set SERVER_ADDRESS=ADDRESS N/A
for /f "tokens=1,2,3" %%x in ('ping -n 1 %%i ^&^& echo SERVER_IS_UP') do (
    if %%x==Pinging set SERVER_ADDRESS=%%y
    if %%x==Reply set SERVER_ADDRESS=%%z
    if %%x==SERVER_IS_UP (set SERVER_STATE=UP) else (set SERVER_STATE=DOWN)
)
echo !SERVER_ADDRESS::=!>>%OUTPUT_FILE%
)
start c:\MaintenanceMode.exe ON %OUTPUT_FILE% %USERNAME% >> "c:\result2.txt"

如果直接从命令提示符运行,则从.exe输出:

PS C:\> .\MaintenanceMode.exe ON C:\result.txt username
Not an IP!!
Reading IPs from File: C:\result.txt
Valid Arguments
System put into MM      Host#   10.*.*.*    Status# Success
System put into MM      Host#   10.*.*.*    Status# Success

1 个答案:

答案 0 :(得分:1)

您正在重定向START命令的输出,但不重定向exe。

如果您想使用START并重定向输出,那么您最常执行一个新的CMD.EXE会话并转义重定向,以便它在新会话中发生:

start cmd /c c:\MaintenanceMode.exe ON %OUTPUT_FILE% %USERNAME% ^>^> "c:\result2.txt"

但你为什么要使用START?如果你只是直接执行你的exe就会简单得多:

c:\MaintenanceMode.exe ON %OUTPUT_FILE% %USERNAME% >> "c:\result2.txt"