第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在bat腳本中回顯控制臺輸出并將其發(fā)送到文件?

如何在bat腳本中回顯控制臺輸出并將其發(fā)送到文件?

繁花如伊 2019-11-25 10:34:07
我有一個(gè)執(zhí)行任務(wù)的批處理腳本,并將輸出發(fā)送到文本文件。有沒有辦法在控制臺窗口上也顯示輸出?例如:c:\Windows>dir > windows-dir.txt有沒有辦法dir在控制臺窗口中顯示輸出并將其輸出到文本文件中?
查看完整描述

3 回答

?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊

不,您不能使用純重定向。

但是,您可以使用一些技巧(例如tee.bat)。


我嘗試解釋一下重定向。


使用> file或<file重定向十個(gè)流之一。

如果重定向是在命令之前還是之后,則這并不重要,因此這兩行幾乎相同。


dir > file.txt

> file.txt dir

在此示例中,重定向只是1>的快捷方式,這意味著將對流1(STDOUT)進(jìn)行重定向。

因此,您可以在任何流之前添加數(shù)字,例如2> err.txt,也可以在一行中重定向多個(gè)流。


dir 1> files.txt 2> err.txt 3> nothing.txt

在此示例中,“標(biāo)準(zhǔn)輸出”將進(jìn)入files.txt,所有錯(cuò)誤都將在err.txt中,stream3將進(jìn)入nothing.txt(DIR不使用流3)。

Stream0是STDIN

Stream1是STDOUT Stream2

是STDERR

Stream3-9未使用


但是,如果您嘗試多次重定向同一流,會(huì)發(fā)生什么情況?


dir > files.txt > two.txt

“只能有一個(gè)”,它永遠(yuǎn)是最后一個(gè)!

因此等于dir> two.txt


好的,還有一種可能,將一個(gè)流重定向到另一個(gè)流。


dir 1>files.txt 2>&1 

2>&1將stream2重定向到stream1,而1> files.txt將所有都重定向到files.txt。

這里的順序很重要!


dir ... 1>nul 2>&1

dir ... 2>&1 1>nul

是不同的。第一個(gè)將所有(STDOUT和STDERR)重定向到NUL,

但是第二行將STDOUT重定向到NUL,將STDERR重定向到“空” STDOUT。


作為一個(gè)結(jié)論,很明顯為什么OtávioDécio和andynormancx的示例無法正常工作。


command > file >&1

dir > file.txt >&2

兩者都嘗試將stream1重定向兩次,但是“只能有一個(gè)”,并且始終是最后一個(gè)。

所以你得到


command 1>&1

dir 1>&2

并且在第一個(gè)示例中,不允許將stream1重定向到stream1(并且不是很有用)。


希望能幫助到你。


查看完整回答
反對 回復(fù) 2019-11-25
?
牛魔王的故事

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊

是的,有一種方法可以在控制臺(屏幕)和文件中顯示單個(gè)命令輸出。使用您的示例,使用...


@ECHO OFF

FOR /F "tokens=*" %%I IN ('DIR') DO ECHO %%I & ECHO %%I>>windows-dir.txt

詳細(xì)說明:


該FOR命令將命令或文本的輸出解析為變量,可以多次引用該變量。


對于諸如的命令,請DIR /B用單引號引起來,如下例所示。將DIR /B文本替換為所需的命令。


FOR /F "tokens=*" %%I IN ('DIR /B') DO ECHO %%I & ECHO %%I>>FILE.TXT

要顯示文本,請用雙引號引起來,如下例所示。


FOR /F "tokens=*" %%I IN ("Find this text on console (screen) and in file") DO ECHO %%I & ECHO %%I>>FILE.TXT

...以及換行...


FOR /F "tokens=*" %%I IN ("Find this text on console (screen) and in file") DO (

  ECHO %%I & ECHO %%I>>FILE.TXT

)

如果您有時(shí)只希望在控制臺(屏幕)上輸出,而有時(shí)只希望將輸出發(fā)送到文件,而有時(shí)又希望同時(shí)發(fā)送給兩個(gè)文件,請使用變量指定FOR循環(huán)的“ DO”子句,如下所示%TOECHOWHERE%。


@ECHO OFF

FOR %%I IN (TRUE FALSE) DO (

  FOR %%J IN (TRUE FALSE) DO (

    SET TOSCREEN=%%I & SET TOFILE=%%J & CALL :Runit)

)

GOTO :Finish


:Runit

  REM Both TOSCREEN and TOFILE get assigned a trailing space in the FOR loops

  REM above when the FOR loops are evaluating the first item in the list,

  REM "TRUE".  So, the first value of TOSCREEN is "TRUE " (with a trailing

  REM space), the second value is "FALSE" (no trailing or leading space).

  REM Adding the ": =" text after "TOSCREEN" tells the command processor to

  REM remove all spaces from the value in the "TOSCREEN" variable.

  IF "%TOSCREEN: =%"=="TRUE" (

      IF "%TOFILE: =%"=="TRUE" (

          SET TEXT=On screen, and in "FILE.TXT"

          SET TOECHOWHERE="ECHO %%I & ECHO %%I>>FILE.TXT"

        ) ELSE (

          SET TEXT=On screen, not in "FILE.TXT"

          SET TOECHOWHERE="ECHO %%I"

      )

    ) ELSE (

      IF "%TOFILE: =%"=="TRUE" (

          SET TEXT=Not on screen, but in "FILE.TXT"

          SET TOECHOWHERE="ECHO %%I>>FILE.txt"

        ) ELSE (

          SET TEXT=Not on screen, nor in "FILE.TXT"

          SET TOECHOWHERE="ECHO %%I>NUL"

      )

  )

  FOR /F "tokens=*" %%I IN ("%TEXT%") DO %TOECHOWHERE:~1,-1%

GOTO :eof


:Finish

  ECHO Finished [this text to console (screen) only].

  PAUSE


查看完整回答
反對 回復(fù) 2019-11-25
  • 3 回答
  • 0 關(guān)注
  • 3812 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號