【发布时间】:2013-01-05 06:10:00
【问题描述】:
我正在将一个 shell 脚本翻译成 windows 批处理。我需要做的是从命令行参数中获取除 1,2 和 last 之外的所有内容。加入他们并作为 argv 发送到另一个程序。
@echo off
SET subject=%1
set count=%2
set candidates=""
set /a i=0
set /a c=0
FOR %%A IN (%*) DO (
ECHO %%A
set /a i+=1
IF %i% geq 2 (
set /a c+=1;
set candidates[!c!]=%%A
)
)
SET /a count_actual=(%i%-3)
SET /a count_expected=%count%
echo %count_expected%
echo %count_actual%
echo %subject%
echo %candidates%
我希望候选数组为argv[3..n-1]
例如如果我写 batch x 2 a b p 它应该将 a b 传递给另一个程序
问题是循环计数器没有被 += 运算符递增。如果我在FOR 内写echo %1%,我总是看到0
【问题讨论】:
-
要查看在循环内修改的变量的值,您必须启用延迟扩展。将其放在脚本的开头
setlocal EnableDelayedExpansion。有关帮助和定义,请参阅setlocal /?。
标签: windows shell batch-file