平臺的Windows XP捕獲輸出命令CMD
當寫命令文件(.bat)我怎麼能「抓住」一個命令的輸出到一個變量?
我想要做這樣的事情
SET CR='dir /tw /-c b.bat | findstr /B "[0-9]"'
但這不工作
問候斯特凡
PS 不,我不能下載中心grep的,cygwin的或任何其他軟件,它必須是CMD DS
平臺的Windows XP捕獲輸出命令CMD
當寫命令文件(.bat)我怎麼能「抓住」一個命令的輸出到一個變量?
我想要做這樣的事情
SET CR='dir /tw /-c b.bat | findstr /B "[0-9]"'
但這不工作
問候斯特凡
PS 不,我不能下載中心grep的,cygwin的或任何其他軟件,它必須是CMD DS
您可以使用FOR /F
,並經過一個批處理文件內的一些循環,以捕獲輸出:
@echo off
setlocal enabledelayedexpansion
set var=
for /f "tokens=* delims=" %%i in ('dir /tw /-c b.bat ^| findstr /B "[0-9]"') do set var=!var!^
%%i
echo %var%
有!var!^
和下面的%%i
之間的兩個新行尤其重要。
另外,你一定要逃逸(再次使用^
)有特殊含義的外殼,如在這種情況下,管道在命令行中的所有字符FOR
。
該解決方案通過遍歷命令的輸出並逐行追加每行var
的內容。爲了方便起見,腳本啓用延遲變量擴展(!var!
語法)。
您可以使用for /f
對此:
for /f %%L in ('dir /tw /-c b.bat ^| findstr /b "[0-9]"') do set CR=%%L
雖然這只是假設只有一行輸出。你不能(平凡或有用地)在一個變量中捕獲多行。
雖然我只能猜測你在做什麼真的試圖做。如果您需要的文件大小(只是因爲/-c
的猜測),那麼它肯定是更容易使用
for %%X in (b.bat) do set size=%%~zX
Youc一集的errorlevel你退出與,你可以問一個命令的退出碼在批處理文件。即時通訊不知道這是你的意思,但我希望它可以幫助。