我有这个单行 CMD 文件 TEST.CMD:
for %%f in (%1 %2 %3 %4 %5 %6 %7 %8) DO ECHO %%f
如果我运行这个:
TEST this is a test
它正确地在单独的行上回显每个参数,即
this
is
a
test
但是,如果参数包含星号,则会跳过它。例如。,
TEST this is a* test
结果是:
this
is
test
如何将带有星号的参数视为普通标记?
Thanks.
适用于大多数参数的最简单方法是将参数传输到变量“数组”,然后使用 FOR /L 循环遍历该数组。这最好通过延迟扩展来实现。
该技术可以处理任意数量的参数——不限于 9 个。
@echo off
setlocal
:: Transfer parameters to an "array"
set arg.cnt=1
:getArgs
(set arg.%arg.cnt%=%1)
if defined arg.%arg.cnt% (
set /a arg.cnt+=1
shift /1
goto :getArgs
)
set /a arg.cnt-=1
:: Process the "array"
setlocal enableDelayedExpansion
for /l %%N in (1 1 %arg.cnt%) do echo arg %%N = !arg.%%N!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)