在for循环中我已检查条件,如果条件为真我已设置计数值并跳过文件中的某些行,
@echo off
SetLocal EnableDelayedExpansion
set /a count=0
set for_parameters="skip=!count! delims="
for /f %for_parameters% %%a in ('list.txt') do (
echo %%a
if %%a==Exception: (
set /a count+=2
)
)
Endlocal
Its shows delims=" was unexpected at this time. Error
任何人都可以帮我解决这个问题.....
答案 0 :(得分:4)
jeb说延迟扩展和FOR选项是真的 - 你不能使用它 - 但这与代码中的问题无关。
在FOR语句中使用表达式之前,您正在使用延迟扩展,因此没有问题。
您的问题是您正在尝试设置SKIP = 0。 SKIP值必须> 0才有效。修复很简单:如果您不想跳过任何行,请不要包含SKIP选项: - )
@echo off
SetLocal EnableDelayedExpansion
set /a count=0
set "skip="
if !count! gtr 0 set "skip=skip=!count!"
set for_parameters="!skip! delims="
for /f %for_parameters% %%a in ('list.txt') do (
echo %%a
if %%a==Exception: (
set /a count+=2
)
)
Endlocal
扩展jeb的观点:你不能做以下事情
for /f !for_parameters! %%a in ...
因为FOR有特殊的解析规则。大多数命令在延迟扩展后解析它们的选项。但FOR和IF在FOR变量扩展和延迟扩展之前解析他们的选项。 FOR变量和延迟扩展都不能用于指定FOR或IF选项。
答案 1 :(得分:1)
在for-options中,您只能使用百分比扩展,但不能使用延迟扩展 如果您的跳过值本身是在块中计算的,那么您需要将for循环提取到函数
中答案 2 :(得分:1)
您可以使用“更多”命令跳过行。
@echo off
:: By Elektro H@cker
SetLocal EnableDelayedExpansion
set /a count=2
for /F %%a in ('Type "list.txt" ^| MORE +!COUNT!') do (echo %%a)
Pause&exit