2

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

誰でもこの問題を解決するのを手伝ってもらえますか.....

4

3 に答える 3

4

遅延拡張と FOR オプションについて jeb が言ったことは真実です - あなたはそれを使うことはできません - しかしそれはあなたのコードの問題とは何の関係もありません.

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 または IF オプションを指定するために、FOR 変数も遅延展開も使用できません。

于 2012-11-30T13:03:11.610 に答える
1

for オプションでは、パーセント展開のみを使用できますが、遅延展開は使用できません。
スキップ値自体がブロックで計算される場合は、for ループを関数に抽出する必要があります。

于 2012-11-30T06:30:12.193 に答える
1

More コマンドを使用して行をスキップできます。

@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
于 2012-11-30T09:37:02.000 に答える