Variables 带有变量的批处理类型文件
我有一个文本文件file.txt,内容如下: %你好% 如果我将hello设置为“holi”,是否有任何方法可以键入file.txt并解析变量内容 也许它是可弯曲的管道,但 键入file.txt | echo 他不适合我 任何帮助都将不胜感激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
谢谢所以我认为您希望文件的内容像变量一样展开 给你:
>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给了您更好的答案。谢谢!这正是我要找的!你的第三个例子非常有效。谢谢你这么快回答。