尝试保存变量批处理文件非典型命令行参数

时间:2012-10-05 21:53:18

标签: batch-file

想知道如何接受批处理文件命令行参数,如下所示,并将它们存储在变量中 -

file.bat /* */ # /* /* */ #

我尝试了这个,我得到了带有斜杠的文件名。我单独尝试了哈希(#)并且它工作得很好,但没有斜杠。我可以以某种方式逃脱它们吗?

回复以下答案 - 这是不起作用的部分 -

SETLOCAL ENABLEDELAYEDEXPANSION
set count=1
FOR %%i in (%*) do (
set var!count!=%%i
set /a count=!count!+1
)

以下答案解决了这个问题。

1 个答案:

答案 0 :(得分:1)

好的,我通过查看previous question中已删除的帖子找出了问题。在您删除的回复中(应该是您的问题的评论或编辑),您说:

  

谢谢你们,它很棒,虽然我只看到了一些我没有看过的东西   期望。看起来我在命令的某些部分有n和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