String 批处理脚本-逗号在将数值写入txt文件时导致问题
这是一个脚本的例子,我正在编写这个脚本来生成一个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 /
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