3

さて、私は私のコードの次の部分にちょっと立ち往生しています。このプログラムは、ファイルusernames_list.txtの行数をカウントします。各行には、入力したいフォルダの名前があります。そのプログラムでリスト内の各フォルダーに入り、test_1というファイルを作成してから、その親フォルダーに移動します。これは、リストの最後に達するまで繰り返す必要があります。私はそれを正しくやっていますか?:/何らかの理由で、「スキップ」オプションは私の変数を受け入れません。

    for /f %%C in ('Find /V /C "" ^< usernames_list.txt') do set lines=%%C
    set times=0
    set /A skip_value=%lines%-(%lines%-%times%)
    :redo
    FOR /F "skip=%skip_value%" %%b IN (usernames_list.txt) DO (
    cd %%b
    echo > test_1
    cd ..
    set /A times=%times%+1
    if /i {%times%}=={%lines%} (goto continue)
    goto redo
    )
    :continue
    pause
4

1 に答える 1

6

現在書かれているset /A skip_value=%lines%-(%lines%-%times%)ように、times = 0であるため、常に0と評価されます。

SKIP値は1以上である必要があります。SKIP=0に設定すると、構文エラーが発生します。

skip_valueを計算するためのロジックに欠陥があるように思われます。ただし、ロジックを修正しても、値が0未満であることを心配する必要があります。値が1より大きい場合にのみ、オプションテキスト全体でSKIP変数を定義することでその状況に対処します。

set "skip="
if %skip_value% geq 1 set "skip=skip=%skip_value%"
for /f "%skip%" %%b in (usernames_list.txt) ...

追加のFOR/Fオプションが必要になる場合があります。それは問題ではない。例えば:

for /f "%skip% delims=" ...
于 2012-12-27T20:59:57.437 に答える