带变量的批处理类型文件

时间:2016-04-15 20:15:21

标签: variables batch-file echo

我有一个带有内容的文本文件file.txt:

  

%你好%

如果我将hello设置为“holi”,有什么办法可以输入file.txt并解析变量内容吗?

也许它是可以控制的管道,但是

  

输入file.txt |回声

不适合我。

任何帮助都会被贬低。

由于

2 个答案:

答案 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:*:=!
)