用于创建文件、将变量放入其中以及从中读取变量的批处理语法[重复]
Posted
技术标签:
【中文标题】用于创建文件、将变量放入其中以及从中读取变量的批处理语法[重复]【英文标题】:Batch syntax for creating a file, putting a variable into it, and than reading the variable from it [duplicate] 【发布时间】:2022-01-12 03:18:53 【问题描述】:如果文件不存在,我有以下代码创建一个文件,创建一个变量(hi),将变量回显到文件中,然后将文本作为变量读取。如果确实存在,它只是将文本作为变量读取:
if exist hiscore.txt (
for /f "delims=" %%x in (hiscore.txt) do set /a hi=%%x
) else (
set /a hi=0
echo %hi%>"hiscore.txt"
for /f "delims=" %%x in (hiscore.txt) do set /a hi=%%x
)
如果我手动创建文件,然后手动输入 0,它就可以工作。如果我删除文件,然后运行它,它会显示“缺少操作数”并将“ECHO 关闭”回显到文件中。我可以改变什么?
【问题讨论】:
这能回答你的问题吗? How to echo "2" (no quotes) to a file, from a batch script? 具体来说,将>"hiscore.txt"
移动到行首,使其变为>"hiscore.txt" echo %hi%
但是,由于您在同一组括号内设置和使用 %hi%
,您还需要阅读 ***.com/questions/9681863/… 以将 setlocal enabledelayedexpansion
添加到您的编写脚本并使用!hi!
而不是%hi%
。
不要使用Set /A
来定义你的变量,只使用Set
。 Set /A
用于执行算术运算,但您不执行任何运算。您应该始终记住的是所有变量都是字符串类型,没有整数类型这样的东西,所以不要认为使用Set /A
会神奇地定义整数类型。因此,您应该在上面的代码中使用Set "hi=%%x"
。
@Compo 我使用 /a 因为它会删除多余的空格,无论字符是数字还是字母
@Gerhard,改变你的(同时被删除的)方法来合并cmd /D /C
可以做到这一点,像这样:@(< "hiscore.txt" set /P HI="" & set /A "HI+=0") > nul 2>&1 || cmd /D /C set /A "HI" > "hiscore.txt"
【参考方案1】:
这是一个可能对您有所帮助的简单示例:
@Echo Off
Set "hi=0"
Set /P "hi=" 0<"hiscore.txt" || (
(Echo Creating and propagating file . . .) 1>CON
Echo %hi%) 1>"hiscore.txt"
【讨论】:
以上是关于用于创建文件、将变量放入其中以及从中读取变量的批处理语法[重复]的主要内容,如果未能解决你的问题,请参考以下文章