作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个单行 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
如何让带星号的参数像普通 token 一样对待?
谢谢。
最佳答案
适用于大多数参数的最简单方法是将参数传输到一个变量“数组”,然后使用 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!
关于for-loop - 带星号的批处理 FOR 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13609760/
我是一名优秀的程序员,十分优秀!