3 回答
TA贡献1818条经验 获得超8个赞
如果必须捕获所有命令输出,则可以使用如下批处理:
@ECHO OFF
IF NOT "%1"=="" GOTO ADDV
SET VAR=
FOR /F %%I IN ('DIR *.TXT /B /O:D') DO CALL %0 %%I
SET VAR
GOTO END
:ADDV
SET VAR=%VAR%!%1
:END
所有输出行都存储在VAR中,以“!”分隔。
@John:这有什么实际用途吗?我认为您应该观看PowerShell或任何其他能够轻松执行脚本任务的编程语言(Python,Perl,PHP,Ruby)
TA贡献1810条经验 获得超4个赞
多年来,谦逊的命令积累了一些有趣的能力:
D:\> FOR /F "delims=" %i IN ('date /t') DO set today=%i
D:\> echo %today%
Sat 20/09/2008
请注意,"delims="覆盖默认空格和制表符分隔符,以便date命令的输出一次全部吞噬。
要捕获多行输出,它仍然可以基本上是单行(使用变量lf作为结果变量中的分隔符):
REM NB:in a batch file, need to use %%i not %i
setlocal EnableDelayedExpansion
SET lf=-
FOR /F "delims=" %%i IN ('dir \ /b') DO if ("!out!"=="") (set out=%%i) else (set out=!out!%lf%%%i)
ECHO %out%
要捕获管道表达式,请使用^|:
FOR /F "delims=" %%i IN ('svn info . ^| findstr "Root:"') DO set "URL=%%i"
- 3 回答
- 0 关注
- 1049 浏览
添加回答
举报