好的,我通过查看您上一个问题中已删除的帖子找到了您的问题。在您删除的回复(应该是对您的问题的评论或编辑)中,您说:
谢谢大家,效果很好,虽然我只是看到了一些我没想到的东西。看起来我在不想更改的命令行部分有编号 1,2 和 3。我只需要以这种方式更改命令行参数 3 到 26,所以我会处理它。
另一个注意事项是我使用这种方法是因为我尝试将 /*、*/ 和 # 直接放在命令行中,而我得到的返回变量是我计算机中的一些文件名。我猜反斜杠以某种方式被解释为文件名。
有没有办法直接在命令行中使用 /*、*/ 和 # 并将它们正确地作为变量引入?如果不是,我将继续使用我的编号方法。
查看该问题中的代码,我发现您正在尝试通过 FOR 循环迭代参数。只要没有任何参数包含*
or ,它就可以很好地工作?
。不幸的是,没有办法逃避这些字符以获得您想要的结果。
我知道的唯一好的解决方案是使用带有 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