Batch file 试图在批处理文件中保存变量不典型的命令行参数
想知道如何接收批处理文件命令行参数,如以下参数,并将其存储在变量中-Batch file 试图在批处理文件中保存变量不典型的命令行参数,batch-file,Batch File,想知道如何接收批处理文件命令行参数,如以下参数,并将其存储在变量中- file.bat /* */ # /* /* */ # 我尝试了这个,我得到了那些有斜杠的文件名。我独自尝试了散列(#),效果很好,但没有斜杠。我能逃脱他们吗 回答下面的问题-这是不起作用的部分- SETLOCAL ENABLEDELAYEDEXPANSION set count=1 FOR %%i in (%*) do ( set var!count!=%%i set /a count=!count!+1 ) 下面的答案
file.bat /* */ # /* /* */ #
我尝试了这个,我得到了那些有斜杠的文件名。我独自尝试了散列(#),效果很好,但没有斜杠。我能逃脱他们吗
回答下面的问题-这是不起作用的部分-
SETLOCAL ENABLEDELAYEDEXPANSION
set count=1
FOR %%i in (%*) do (
set var!count!=%%i
set /a count=!count!+1
)
下面的答案解决了这个问题。好的,我通过查看您网站上删除的帖子,解决了您的问题。在您删除的回复(应该是对您的问题的评论或编辑)中,您声明: 谢谢大家,虽然我看到了一些我没有看到的东西,但效果很好 期待。看起来我在命令的某些部分有1、2和3个数字 我不想改变的台词。我需要命令行参数3到26 只是以这种方式改变了,所以我会继续努力 另一个注意事项是,我之所以采用这种方法,是因为我尝试了 /*、*/和#直接在命令行和返回变量I中 正在从我的计算机上获取一些文件名。我想 反斜杠以某种方式被解释为文件名 有没有办法直接在命令行和中使用/*、*/和# 正确地将它们作为变量引入?如果不是,我会和我的朋友呆在一起 编号方法 查看该问题中的代码,我发现您正试图通过FOR循环迭代参数。只要所有参数都不包含
*
或?
,这就很好了。不幸的是,没有办法转义这些字符以获得您想要的结果
我知道的唯一好的解决方案是使用带有SHIFT的GOTO循环来迭代参数
@echo off
setlocal
set n=0
:parseArgs
set /a n+=1
(set arg%n%=%1)
if defined arg%n% (
shift /1
goto :parseArgs
)
::display the parsed arguments
set arg
好的,我通过查看你网站上的一篇被删除的帖子,解决了你的问题。在您删除的回复(应该是对您的问题的评论或编辑)中,您声明: 谢谢大家,虽然我看到了一些我没有看到的东西,但效果很好 期待。看起来我在命令的某些部分有1、2和3个数字 我不想改变的台词。我需要命令行参数3到26 只是以这种方式改变了,所以我会继续努力 另一个注意事项是,我之所以采用这种方法,是因为我尝试了 /*、*/和#直接在命令行和返回变量I中 正在从我的计算机上获取一些文件名。我想 反斜杠以某种方式被解释为文件名 有没有办法直接在命令行和中使用/*、*/和# 正确地将它们作为变量引入?如果不是,我会和我的朋友呆在一起 编号方法 查看该问题中的代码,我发现您正试图通过FOR循环迭代参数。只要所有参数都不包含
*
或?
,这就很好了。不幸的是,没有办法转义这些字符以获得您想要的结果
我知道的唯一好的解决方案是使用带有SHIFT的GOTO循环来迭代参数
@echo off
setlocal
set n=0
:parseArgs
set /a n+=1
(set arg%n%=%1)
if defined arg%n% (
shift /1
goto :parseArgs
)
::display the parsed arguments
set arg
我认为没有任何转义序列可以在命令行参数上使用来解决问题。请在批处理脚本中显示不起作用的代码(编辑您的问题)。我可以猜测您可能尝试了什么,但我不能确定。我不认为您可以在命令行参数上使用任何转义序列来解决问题。请在批处理脚本中显示不起作用的代码(编辑您的问题)。我能猜到你可能尝试了什么,但我不能肯定。