如何将命令输出设置为batch file中的variables

是否可以将batch file的语句输出设置为variables,例如:

findstr testing > %VARIABLE% echo %VARIABLE% 
 FOR /F "tokens=* USEBACKQ" %%F IN (`command`) DO ( SET var=%%F ) ECHO %var% 

我总是使用USEBACKQ,所以如果你有一个string插入或一个长文件名,你可以使用你的双引号,而无需拧紧命令。

现在如果你的输出将包含多行,你可以这样做

 SETLOCAL ENABLEDELAYEDEXPANSION SET count=1 FOR /F "tokens=* USEBACKQ" %%F IN (`command`) DO ( SET var!count!=%%F SET /a count=!count!+1 ) ECHO %var1% ECHO %var2% ECHO %var3% ENDLOCAL 

我在Interweb上发现了这个线程 。 归结为:

 @echo off setlocal enableextensions for /f "tokens=*" %%a in ( 'VER' ) do ( set myvar=%%a ) echo/%%myvar%%=%myvar% pause endlocal 

您也可以将命令的输出redirect到临时文件,然后将该临时文件的内容放入variables中,例如:

 cmd > tmpFile set /p myvar= < tmpFile del tmpFile 

感谢Tom's Hardware上的主题。

要阅读文件…

 set /P Variable=<File.txt 

写一个文件

 @echo %DataToWrite%>File.txt 

注意; 在<>字符之前有空格也会在variables末尾添加空格

要添加到文件,如logging器程序,首先使用一个名为e.txt的input密钥创build一个文件

 set /P Data=<log0.log set /P Ekey=<e.txt @echo %Data%%Ekey%%NewData%>log0.txt 

你的日志看起来像这样

 Entry1 Entry2 

等等

反正一些有用的东西

 cd %windir%\system32\inetsrv @echo off for /F "tokens=* USEBACKQ" %%x in ( `appcmd list apppool /text:name` ) do ( echo|set /p= "%%x - " /text:name & appcmd.exe list apppool "%%x" /text:processModel.identityType ) echo %date% & echo %time% pause 

我已经testing了这样,它的工作:SET / P Var = | CMD

通过将命令input到variables提示符中,将命令“Cmd”的结果插入到variables“Var”中。

-Update-

它不工作,我的坏,我做的脚本是这样的:

 SET /P Var= | dir /b *.txt echo %Var% 

它实际上是让我们说“test.txt”,但实际上是显示“dir / b * .txt”命令的结果,而不是echo%var%。 我感到困惑,因为两个输出都是一样的。

希望这个帮助

 set a=%username% echo %a% set a="hello" echo %a%