如何将命令输出设置为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%