所以我知道如何使用
将字符串作为批处理列表保存到文本文件中set /p Myvar1="Enter your variable name/value: "
set /p Myvar2="Enter your variable name/value: "
set /p Myvar3="Enter your variable name/value: "
然后附加到文本文件
echo %Myvar1% %Myvar2% %Myvar3% >> Mylist.txt
因此,当我通过批处理文件打开文本文件时,可以显示它 作为清单:
SET "variables="
ECHO =================================================
ECHO My list of stuff
ECHO =================================================
< Mylist.txt (
set /p MyVar1=
set /p MyVar2=
set /p MyVar3=
)
::set line
ECHO - [0] - %Myvar1%
ECHO - [1] - %Myvar1%
ECHO - [2] - %Myvar1%
现在的问题是:
对于Mylist.txt
文本文件中的每个新行,我必须在批处理文件中手动添加行。在提供的示例中,批处理已设置为显示文本文件中的3行文本。如果文本文件有10行,它将只显示前3行,因为这是指定的。所以我想完成这个脚本的反面。
批处理文件应该能够:
Mylist.txt
。Mylist.txt
文件中的每一行,批处理文件会创建一个&#34;计算变量&#34;。答案 0 :(得分:0)
简单的事情是for
循环加上一个计数器:
setlocal enabledelayedexpansion
set i=0
for /f "delims=" %%a in (mylist.txt) do (
set /a i+=1
set var[!i!]=%%a
)
echo number of variables: %i%:
set var[
echo ---------
for /l %%a in (1,1,%i%) do echo variable %%a = %var[%%a]%
答案 1 :(得分:0)
将变量名称及其值保存到文件的最简单方法是将命令 SET 的输出重定向到文件。
set My >"%APPDATA%\MyVariables.txt"
这个简单的行将名称和值以名称My
开头的所有环境变量保存到当前用户的应用程序数据目录中的文件MyVariables.txt
中。
可以在批处理文件中使用以下命令行从文件中重新加载这些环境变量:
for /F "usebackq delims=" %%I in ("%APPDATA%\MyVariables.txt") do set "%%I"
直接在命令提示符窗口中使用的相同命令行:
for /F "usebackq delims=" %I in ("%APPDATA%\MyVariables.txt") do set "%I"
更安全一点就是检查文件MyVariables.txt
中的每一行是否真的按照预期My
开头,因此没有被想要覆盖的人操纵,例如PATH
通过手动添加到文件MyVariables.txt
以PATH=
开头的行。
知道从文件加载了多少变量可能很有用。这可以通过简单的扩展来实现:
set "VariablesCount=0"
for /F "usebackq delims=" %%I in ("%APPDATA%\MyVariables.txt") do set "%%I" & set /A VariablesCount+=1
当然如果有一个以MyVariablesCount
开头的环境变量My
,那么这个带有它值的变量也会保存到文件中并从文件中重新加载,这样就不需要计算数量了变量从文件设置。
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
for /?
set /?
另请阅读Microsoft有关Using Command Redirection Operators。
的文章