【问题标题】:redirecting .exe output within batch script to txt file将批处理脚本中的 .exe 输出重定向到 txt 文件
【发布时间】:2014-12-25 14:39:28
【问题描述】:

我正在尝试将正在从批处理文件调用的 exe(命令行 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

【问题讨论】:

    标签: batch-file output exe redirect


    【解决方案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"
    

    【讨论】:

      猜你喜欢
      • 2010-09-12
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多