batch-file - 跳过=!计数!在 windows(7) 批处理文件中不起作用

标签 batch-file

在 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

谁能帮我解决这个问题.....

最佳答案

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 选项。

关于batch-file - 跳过=!计数!在 windows(7) 批处理文件中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13639892/

相关文章:

batch-file - 调度使用 rclone 的 bat 文件

multithreading - 多线程批处理队列。怎么办?

java - 通过使用BAT文件执行Jar文件

windows - 如何使用电子表格重命名多个文件夹?

windows - 检查远程主机上某个端口的状态

batch-file - 如何从使用 Windows find 命令的 cygwin bash 执行 bat 文件

batch-file - 在cmd中重新排列数组元素

java - 我们如何通过批处理文件运行 cucumber 测试?

batch-file - 批处理脚本 - 对目录中的每个文件运行命令

html - 批处理 : Fill array by text file with escaped characters