我想调用一个带有逗号分隔参数的批处理文件。该如何实现?
我想要的效果就像这个例子一样。
我有一个名为text.bat的脚本:
@echo off
set test=%1
echo Sample %test% batch.
我想像这样运行批处理程序:
c:\text.bat this,is,sample
我期望得到这样的结果:
Sample this,is,sample batch.
你有任何想法如何实现这个吗?
谢谢。
我想调用一个带有逗号分隔参数的批处理文件。该如何实现?
我想要的效果就像这个例子一样。
我有一个名为text.bat的脚本:
@echo off
set test=%1
echo Sample %test% batch.
我想像这样运行批处理程序:
c:\text.bat this,is,sample
我期望得到这样的结果:
Sample this,is,sample batch.
你有任何想法如何实现这个吗?
谢谢。
哇!我不知道逗号会有那种用法。
你有两个选择。
你可以使用这个脚本:
@echo off
set test=%~1
echo Sample %test% batch.
并使用以下命令运行:
C:\text.bat "this,is,test"
%~1
表示第一个无引号的参数。 引号将逗号分隔的列表作为单个参数进行分组。
或者
您可以使用此脚本:
@echo off
set test=%*
echo Sample %test% batch.
然后使用以下方式运行:
C:\text.bat this,is,test
%*
代表命令行参数的输入方式。%*
是最好的解决方案。谢谢。 - Jürgen Steinblock,
,分号 ;
和等号 =
也是命令提示符中的定界符,参考链接 https://ss64.com/nt/syntax-esc.html。 - phuclvc:\text.bat "this,is,sample"
并使用 %~1 获取参数以消除引号:set test=%~1
。shift
会分隔逗号分隔的字符串。另一个回答没有提到这一点。但是,您说原始帖子的唯一选项是使用 %~1
。这并不正确;另一个回答提到的另一种选择是使用 %*
。在这种情况下,逗号分隔的列表是否被引号包含都没有关系。 - Alanc:\text.bat "this,is,sample" "second,param,with,commas"
。唯一的方法是将_每个参数_用引号括起来,并使用%~1
和%~2
... - Aacini