Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理文件缺少操作数错误,但输出正确_Batch File_Cmd - Fatal编程技术网

Batch file 批处理文件缺少操作数错误,但输出正确

Batch file 批处理文件缺少操作数错误,但输出正确,batch-file,cmd,Batch File,Cmd,我制作了一个批处理文件,将用户输入的数字添加到存储在文本文件中的数字中。 文件num1.txt包含268。我打开cmd并键入addToNum num1 20得到缺少的操作数。但当我再次打开num1.txt时,它现在包含288。因此,该命令起作用,但我仍然得到了错误。 这是我的剧本: @echo off set /a value = < C:\path\to\file\%1.txt set /a value = %value% + %2 echo %value% > C:\path\

我制作了一个批处理文件,将用户输入的数字添加到存储在文本文件中的数字中。 文件
num1.txt
包含
268
。我打开cmd并键入
addToNum num1 20
得到
缺少的操作数。
但当我再次打开
num1.txt
时,它现在包含
288
。因此,该命令起作用,但我仍然得到了错误。

这是我的剧本:

@echo off
set /a value = < C:\path\to\file\%1.txt
set /a value = %value% + %2
echo %value% > C:\path\to\file\%1.txt
@echo关闭
设置/a值=C:\path\to\file\%1.txt

有什么问题?为什么不影响输出?

使用
set/p
从文件中获取初始值,而不是
set/a

@echo off
set /p value=<"C:\path\to\file\%~1.txt"
set /a value+=%2
echo %value%>"C:\path\to\file\%~1.txt"
@echo关闭
set/p value=“C:\path\to\file\%~1.txt”

也可以使用
set/a value+=%2
而不是
set/a value=%value+%2

谢谢,现在它可以工作了。但是我可以问一下你为什么把
围绕路径,以及为什么将
%1
更改为
%1
?路径和文件可以包含空格,
cmd
中的空格被视为分隔符。因此,通过双引号,我们确保我们消除了空格作为分隔符
%1
通过删除任何后续双引号来扩展
%1
,因此当我们使用
%1
时,有关变量扩展的详细信息,请参见
获取/?
。@FoxyBoi请打开,运行
cmd/?
,并阅读解释批处理文件的Windows命令处理器的输出帮助。在最后一页最后一段中的许多其他有用信息中,有一个文件名(或其他参数字符串)包含空格或其中一个字符
&()[]{}^=;!'+`~(或被解释为文字字符的
必须包含在
中。在
中包含文件/文件夹参数字符串从来都是正确的,但不这样做可能是错误的。顺便说一句:最好是第二行
设置“value=0”
,第三行
用于/F“usebackq”%%I(“C:\path\to\file\%~1.txt”)设置“value=%%I”和“goto AddValue”
(忽略文件顶部的空行),作为第四行
:AddValue
,如果不是第五行
,“%2”==”设置/A值+=%2
,最重要的是最后一行
“C:\path\to\file\%~1.txt”“echo%value%
首先在命令行上重定向,最后一次
echo%value%
将值
1
2
3
,…,
9
写入文件,无尾随空格。这一行变为
echo 11>“C:\path\to\file\test.txt”
。。。。。。行刑时。最后一行也可以是
(echo%value%)>“C:\path\to\file\%~1.txt”
,它在执行时变成
(echo 1)1>“C:\path\to\file\test.txt”
,它也可以安全地将值
1
写入文件,而不带尾随空格。命令行
echo%value%>“C:\path\to\file\%~1.txt”
随值
1
变为命令行
echo 1>“C:\path\to\file\test.txt”
,因此命令echo模式的当前状态被写入文件,而不是值
1