忽略.bat批处理脚本中的问号

时间:2009-05-25 18:56:21

标签: batch-file scripting

问题是我需要将带有问号的一个参数传递给.bat批处理文件。如果我使用问号,则参数不能很好地通过。我该如何解决这个问题?

我遇到了这条线的麻烦:

script.bat /n"output.owl" /r"http://www.address.com/blog/?feed=rss2"

=符号也可能是一个问题。

2 个答案:

答案 0 :(得分:2)

我怀疑这里的问题是原始批处理文件正在使用for循环 处理命令行选项,正在使用问号 filename通配符扩展。

> type fortest.bat
@echo off
for %%a in (%*) do (
   echo arg is %%a
)
> fortest a b c/?d
arg is a
arg is b

使用位置参数%1和%2可避免通配符扩展 在for ...(%*)循环中完成。移位运算符避免了外卡 如果需要处理未知数量的参数,也需要进行扩展。

> type shifttest.bat
@echo off
:loop
    if "x%1" == "x" goto :eof
    echo arg is %1
    shift /1
    goto :loop
> shifttest a b c/?d
arg is a
arg is b
arg is c/?d

答案 1 :(得分:0)

你总是可以陷阱?在批处理文件中,并向用户显示相应的消息。

This is a question可以帮助你,这已经被问过了。