我有一个带有内容的文本文件file.txt:
%你好%
如果我将hello设置为“holi”,有什么办法可以输入file.txt并解析变量内容吗?
也许它是可以控制的管道,但是
输入file.txt |回声
不适合我。
任何帮助都会被贬低。
由于
答案 0 :(得分:3)
所以我认为你希望扩展文件的内容就像变量一样。
你走了:
>echo %hello%>file.txt
>type file.txt
%hello%
>set hello=holi
>type file.txt
%hello%
>for /f %f in (file.txt) do @echo %f
%hello%
>for /f %f in (file.txt) do @call echo %f
holi
>
答案 1 :(得分:3)
假设没有需要保留的空行
for /f usebackq^ delims^=^ eol^= %%A in ("yourFile.txt") do call echo(%%A
如果有空白行,但没有行以:
开头,那么
for /f "delims=: tokens=1*" %%A in ('findstr /n "^" "yourFile.txt"') do call echo(%%B
如果有空行,有些行以:
开头,并且没有!
个文字
setlocal enableDelayedExpansion
for /f "delims=" %%A in ('findstr /n "^" "yourFile.txt"') do (
set "ln=%%A"
call echo(!ln:*:=!
)
如果有空白行,而某些行以:
开头,并且有!
个文字
for /f "delims=" %%A in ('findstr /n "^" "yourFile.txt"') do (
setlocal enableDelayedExpansion
set "ln=%%A"
call echo(!ln:*:=!
endlocal
)
以上所有都使用CALL,这会大大减慢速度。如果您将!hello!
放在文件中而不是%hello%
,解决方案会更快,然后您可以依靠延迟扩展来扩展变量。
如果没有空行
setlocal enableDelayedExpansion
for /f usebackq^ delims^=^ eol^= %%A in ("yourFile.txt") do echo(%%A
如果是空行,但没有行以:
setlocal enableDelayedExpansion
for /f "delims=: tokens=1*" %%A in ('findstr /n "^" "yourFile.txt"') do echo(%%B
如果是空行,有些行以:
setlocal enableDelayedExpansion
for /f "delims=" %%A in ('findstr /n "^" "yourFile.txt"') do (
set "ln=%%A"
echo(!ln:*:=!
)