Variables 带有变量的批处理类型文件

Variables 带有变量的批处理类型文件,variables,batch-file,echo,Variables,Batch File,Echo,我有一个文本文件file.txt,内容如下: %你好% 如果我将hello设置为“holi”,是否有任何方法可以键入file.txt并解析变量内容 也许它是可弯曲的管道,但 键入file.txt | echo 他不适合我 任何帮助都将不胜感激 谢谢所以我认为您希望文件的内容像变量一样展开 给你: >echo %hello%>file.txt >type file.txt %hello% >set hello=holi >type file.txt %hello

我有一个文本文件file.txt,内容如下:

%你好%

如果我将hello设置为“holi”,是否有任何方法可以键入file.txt并解析变量内容

也许它是可弯曲的管道,但

键入file.txt | echo

他不适合我

任何帮助都将不胜感激


谢谢

所以我认为您希望文件的内容像变量一样展开

给你:

>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

>

假设没有需要保留的空行

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
)
如果有空行和一些以
开头的行:
,则有
文字

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%
,然后您可以依靠延迟扩展来扩展变量

如果没有空行

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:*:=!
)
如果是空行,有些行以
开头:

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

你能澄清你想做什么,你的问题是什么吗?你把hello设为“holi”是什么意思。解析变量内容是什么意思?@kaskader-Fradantim有一个名为
hello
的环境变量,其值为
holi
。他想写文件的内容,但变量名要扩展到百分比以内。谢谢@dbenham,现在更清楚了!如果你能重写这个问题,让它更容易理解,那就太好了!谢谢你这么快的理解和回答。这是一个很好的答案,但如果文件中包含的行不止包含变量,例如“a%hello%”或“a%hello%”或“%hello%a”,则对我来说不起作用。对不起,我应该这么说。@Fradantim我试过了,它确实有效,至少在你提到的情况下是如此。但是,它不适用于空行-在这方面,dbenham给了您更好的答案。谢谢!这正是我要找的!你的第三个例子非常有效。谢谢你这么快回答。