我有一個批處理文件從Internet複製下面。 需要一些幫助。 批處理從命令或其他批處理中獲取輸出,並將輸出回顯到控制檯和指定文件。迴應到控制檯是好的,但是有沒有辦法只在條件滿足時才寫入文件?如果回顯文本包含一些字符串,可能是「LOGMESSAGE」。 因此,如果2條消息被命令或批處理響應,則返回 消息1:「你好,你好嗎?」 消息2:「LOGMESSAGE謝謝,我很好。」修改批處理腳本以有條件地寫入文件
消息1應該只在控制檯上顯示,消息2應該在控制檯和文件中顯示。要被記錄
@ECHO OFF
:: Check Windows version
IF NOT "%OS%"=="Windows_NT" GOTO Syntax
:: Keep variables local
SETLOCAL
:: Check command line arguments
SET Append=0
IF /I [%1]==[-a] (
SET Append=1
SHIFT
)
IF [%1]==[] GOTO Syntax
IF NOT [%2]==[] GOTO Syntax
:: Test for invalid wildcards
SET Counter=0
FOR /F %%A IN ('DIR /A /B %1 2^>NUL') DO CALL :Count "%%~fA"
IF %Counter% GTR 1 (
SET Counter=
GOTO Syntax
)
:: A valid filename seems to have been specified
SET File=%1
:: Check if a directory with the specified name exists
DIR /AD %File% >NUL 2>NUL
IF NOT ERRORLEVEL 1 (
SET File=
GOTO Syntax
)
:: Specify /Y switch for Windows 2000/XP COPY command
SET Y=
VER | FIND "Windows NT" > NUL
IF ERRORLEVEL 1 SET Y=/Y
:: Flush existing file or create new one if -a wasn't specified
IF %Append%==0 (COPY %Y% NUL %File% > NUL 2>&1)
:: Actual TEE
FOR /F "tokens=1* delims=]" %%A IN ('FIND /N /V ""') DO (
> CON ECHO.%%B
>> %File% ECHO.%%B
)
:: Done
ENDLOCAL
GOTO:EOF
:Count
SET /A Counter += 1
SET File=%1
GOTO:EOF
:Syntax
ECHO.
ECHO Tee.bat, Version 2.11a for Windows NT 4/2000/XP
ECHO Display text on screen and redirect it to a file simultaneously
ECHO.
IF NOT "%OS%"=="Windows_NT" ECHO Usage: some_command ¦ TEE.BAT [ -a ] filename
IF NOT "%OS%"=="Windows_NT" GOTO Skip
ECHO Usage: some_command ^| TEE.BAT [ -a ] filename
:Skip
ECHO.
ECHO Where: "some_command" is the command whose output should be redirected
ECHO "filename" is the file the output should be redirected to
ECHO -a appends the output of the command to the file,
ECHO rather than overwriting the file
ECHO.
ECHO.
ECHO Written by Rob van der Woude
ECHO http://www.robvanderwoude.com
ECHO Modified by Kees Couprie
ECHO http://kees.couprie.org
ECHO and Andrew Cameron
該解決方案的工作。但是會在文件中追加空行。但它的工作謝謝。 – user646108 2013-05-02 14:16:43
嗨@peter,提示和命令也被刷新到文件中。像這樣: C:\> echo LOGMESSAGE bbbbbbbb LOGMESSAGE bbbbbbbb 在這種情況下是否可以只獲得實際的輸出LOGMESSAGE bbbbbbbb? – user646108 2013-05-02 14:31:01
有趣。也許這是一個操作系統版本的差異。我使用的是WIN7,並在每個原始文件中插入了一個「DIR」列表,然後是帶有已更改的「FOR」塊的文件。除了排除不同的字符串(其中一個文件名),我沒有添加空行。好奇... – Magoo 2013-05-02 14:32:29