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