用于创建文件、将变量放入其中以及从中读取变量的批处理语法[重复]

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 来定义你的变量,只使用SetSet /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"

【讨论】:

以上是关于用于创建文件、将变量放入其中以及从中读取变量的批处理语法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将文本文档批量拆分为变量

批处理脚本上的数组

为啥以及如何将秘密放入 Node.js 的环境变量中?

如何逐个读取csv文件数据并将其放入变量Using Groovy

VBS从文件读取变量名称和数据

如何从一行中删除某些单词,但将其余部分放入带有批处理的字符串/变量中?