Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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
String 批处理脚本-逗号在将数值写入txt文件时导致问题_String_Batch File_Scripting_Dos_String Concatenation - Fatal编程技术网

String 批处理脚本-逗号在将数值写入txt文件时导致问题

String 批处理脚本-逗号在将数值写入txt文件时导致问题,string,batch-file,scripting,dos,string-concatenation,String,Batch File,Scripting,Dos,String Concatenation,这是一个脚本的例子,我正在编写这个脚本来生成一个txt文件,其中包含一个格式正确的命令列表,这些命令将根据一系列的问题传递给另一个系统 如果为objectName、objectNumber或objectCategory分配了字母数字值,脚本将正确写入txt文件。但是,如果要指定一个数值,则该值不会写入txt文件 我猜这是一个与逗号的使用有关的语法问题,因为我可以用几乎任何东西替换它,脚本将正常工作,但不幸的是它必须是逗号 @ECHO OFF SET objectCounter=1 SET /

这是一个脚本的例子,我正在编写这个脚本来生成一个txt文件,其中包含一个格式正确的命令列表,这些命令将根据一系列的问题传递给另一个系统

如果为
objectName
objectNumber
objectCategory
分配了字母数字值,脚本将正确写入txt文件。但是,如果要指定一个数值,则该值不会写入txt文件

我猜这是一个与逗号的使用有关的语法问题,因为我可以用几乎任何东西替换它,脚本将正常工作,但不幸的是它必须是逗号

@ECHO OFF

SET objectCounter=1

SET /p objectName=What is the name of the object %objectCounter%?: 
@ECHO OBJECTNAME%objectCounter%,%objectName%> objects.txt

SET /p objectNumber=How many of object %objectCounter% are there?: 
@ECHO OBJECTNUMBER%objectCounter%,%objectNumber%>> objects.txt

SET /p objectCategory=Which group does object %objectCounter% belong to?: 
@ECHO OBJECTCATEGORY%objectCounter%,%objectNumber%>> objects.txt
这是一个输出到txt文件的示例,如果
objectNumber
被赋值为
1

OBJECTNAME1,Apple
OBJECTNUMBER1,
OBJECTCATEGORY1,Fruit
如果
objectNumber
分配了
2
或更多的值,则这是输出到txt文件的示例:

OBJECTNAME1,Apple
OBJECTCATEGORY1,Fruit

看起来它与输出重定向以及逗号有关。我认为,逗号在那里,数值被绑定到重定向,而不是被输出的对象

换句话说,尽管:

set x=1
echo xyzzy%x%>qq.txt
将工作(正在输出的东西是
xyzy%x%
,重定向为
>qq.txt
),以下将不工作:

set x=1
echo xyzzy,%x%>qq.txt
(大概是因为输出的东西是
xyzy,
带有重定向操作
1>qq.txt
,这与
>qq.txt
相同)。这也解释了
1
与其他数字之间的差异,因为
1
是标准输出

即使没有变量展开,您也可以看到类似的问题:

C:\pax> echo xyzzy1>qq.txt
C:\pax> type qq.txt
xyzzy1

C:\pax> echo xyzzy,1>qq.txt
C:\pax> type qq.txt
xyzzy,
解决此问题的一种方法是重新组织组件,使数值不能绑定到重定向:

>>objects.txt ECHO OBJECTNUMBER%objectCounter%,%objectNumber%
我倾向于将它们放在一开始,因为使用了以下内容:

echo xyzzy >file
将实际输出
xyzy
和紧靠
前面的空格

修改这样的行(并修复第三个
echo
,使其再次输出类别而不是数字)将为您提供:

What is the name of the object 1?: Apple
How many of object 1 are there?: 1
Which group does object 1 belong to?: Fruit
结果文件为:

OBJECTNAME1,Apple
OBJECTNUMBER1,1
OBJECTCATEGORY1,Fruit

看起来它与输出重定向以及逗号有关。我认为,逗号在那里,数值被绑定到重定向,而不是被输出的对象

换句话说,尽管:

set x=1
echo xyzzy%x%>qq.txt
将工作(正在输出的东西是
xyzy%x%
,重定向为
>qq.txt
),以下将不工作:

set x=1
echo xyzzy,%x%>qq.txt
(大概是因为输出的东西是
xyzy,
带有重定向操作
1>qq.txt
,这与
>qq.txt
相同)。这也解释了
1
与其他数字之间的差异,因为
1
是标准输出

即使没有变量展开,您也可以看到类似的问题:

C:\pax> echo xyzzy1>qq.txt
C:\pax> type qq.txt
xyzzy1

C:\pax> echo xyzzy,1>qq.txt
C:\pax> type qq.txt
xyzzy,
解决此问题的一种方法是重新组织组件,使数值不能绑定到重定向:

>>objects.txt ECHO OBJECTNUMBER%objectCounter%,%objectNumber%
我倾向于将它们放在一开始,因为使用了以下内容:

echo xyzzy >file
将实际输出
xyzy
和紧靠
前面的空格

修改这样的行(并修复第三个
echo
,使其再次输出类别而不是数字)将为您提供:

What is the name of the object 1?: Apple
How many of object 1 are there?: 1
Which group does object 1 belong to?: Fruit
结果文件为:

OBJECTNAME1,Apple
OBJECTNUMBER1,1
OBJECTCATEGORY1,Fruit

看起来它与输出重定向以及逗号有关。我认为,逗号在那里,数值被绑定到重定向,而不是被输出的对象

换句话说,尽管:

set x=1
echo xyzzy%x%>qq.txt
将工作(正在输出的东西是
xyzy%x%
,重定向为
>qq.txt
),以下将不工作:

set x=1
echo xyzzy,%x%>qq.txt
(大概是因为输出的东西是
xyzy,
带有重定向操作
1>qq.txt
,这与
>qq.txt
相同)。这也解释了
1
与其他数字之间的差异,因为
1
是标准输出

即使没有变量展开,您也可以看到类似的问题:

C:\pax> echo xyzzy1>qq.txt
C:\pax> type qq.txt
xyzzy1

C:\pax> echo xyzzy,1>qq.txt
C:\pax> type qq.txt
xyzzy,
解决此问题的一种方法是重新组织组件,使数值不能绑定到重定向:

>>objects.txt ECHO OBJECTNUMBER%objectCounter%,%objectNumber%
我倾向于将它们放在一开始,因为使用了以下内容:

echo xyzzy >file
将实际输出
xyzy
和紧靠
前面的空格

修改这样的行(并修复第三个
echo
,使其再次输出类别而不是数字)将为您提供:

What is the name of the object 1?: Apple
How many of object 1 are there?: 1
Which group does object 1 belong to?: Fruit
结果文件为:

OBJECTNAME1,Apple
OBJECTNUMBER1,1
OBJECTCATEGORY1,Fruit

看起来它与输出重定向以及逗号有关。我认为,逗号在那里,数值被绑定到重定向,而不是被输出的对象

换句话说,尽管:

set x=1
echo xyzzy%x%>qq.txt
将工作(正在输出的东西是
xyzy%x%
,重定向为
>qq.txt
),以下将不工作:

set x=1
echo xyzzy,%x%>qq.txt
(大概是因为输出的东西是
xyzy,
带有重定向操作
1>qq.txt
,这与
>qq.txt
相同)。这也解释了
1
与其他数字之间的差异,因为
1
是标准输出

即使没有变量展开,您也可以看到类似的问题:

C:\pax> echo xyzzy1>qq.txt
C:\pax> type qq.txt
xyzzy1

C:\pax> echo xyzzy,1>qq.txt
C:\pax> type qq.txt
xyzzy,
解决此问题的一种方法是重新组织组件,使数值不能绑定到重定向:

>>objects.txt ECHO OBJECTNUMBER%objectCounter%,%objectNumber%
我倾向于将它们放在一开始,因为使用了以下内容:

echo xyzzy >file
将实际输出
xyzy
和紧靠
前面的空格

修改这样的行(并修复第三个
echo
,使其再次输出类别而不是数字)将为您提供:

What is the name of the object 1?: Apple
How many of object 1 are there?: 1
Which group does object 1 belong to?: Fruit
结果文件为:

OBJECTNAME1,Apple
OBJECTNUMBER1,1
OBJECTCATEGORY1,Fruit

这是一种简化:使用
echo
命令发送文本
data 1