我需要能够加载一个文本文件的全部内容,并加载到一个variables进一步处理。
我怎样才能做到这一点?
罗马Odaisky的答案,这是我做的感谢。
SetLocal EnableDelayedExpansion set content= for /F "delims=" %%i in (test.txt) do set content=!content! %%i echo %content% EndLocal
使用,沿线的东西:
set content= for /f "delims=" %%i in ('filename') do set content=%content% %%i
也许你必须做setlocal enabledelayedexpansion
和/或使用!content!
而不是%content%
。 我无法测试,因为我附近没有任何MS Windows(我希望你也一样:-)。
我知道的最好的批处理文件黑魔法参考是在http://www.rsdn.ru/article/winshell/batanyca.xml 。 如果你不知道俄罗斯,你仍然可以使用提供的代码片段。
如果您的set命令支持/ p开关,那么您可以通过这种方式管道输入。
set /p VAR1=<test.txt
/ P开关允许您将变量的值设置为由用户输入的一行输入。 在读取输入行之前显示指定的promptString。 promptString可以是空的。
这为未注册的文件类型(接受的答案没有)提供了额外的好处。
您可以使用:
set content= for /f "delims=" %%i in ('type text.txt') do set content=!content! %%i
您可以通过阅读本页(简单阅读,简洁明了)直接或间接或稍后获益。
将文件数据导入环境变量(env var)
我能够用“方法4b”取得成功,这让我希望我最终能够成功与4a。
你可以定义进一步的处理?
你可以使用for循环来做到这一点,但是把CR / LF插入到环境变量中并不是一件容易的事情,所以你将所有东西放在一行中。 (你可能能够解决这个问题,取决于你需要做什么。)
你也被限制在少于8K的文本文件。 (你不能创建一个大于8K的单个env变量。)
比尔建议的for循环可能是你所需要的。 您一次处理文件一行:
(在批处理文件的命令行%%i
中使用%i
)
for /f "tokens=1 delims=" %%i in (file.txt) do echo %%i
更先进:
for /f "tokens=1 delims=" %%i in (file.txt) do call :part2 %%i goto :fin :part2 echo %1 ::do further processing here goto :eof :fin
创建一个名为“SetFile.bat”的文件,其中包含以下行, 并在其末尾没有回车符 …
set FileContents=
然后在你的批处理文件中做这样的事情…
@echo off copy SetFile.bat + %1 $tmp$.bat > nul call $tmp$.bat del $tmp$.bat
%1是输入文件的名称,%FileContents%将包含调用后输入文件的内容。 这只能在一行文件上工作(即不包含回车符的文件)。 如果需要,可以在调用%tmp%.bat之前从文件中去除/替换回车符。
for /f "delims=" %%i in (count.txt) do set c=%%i echo %c% pause