単純なバッチファイルを作成して、そのディレクトリ内のすべてのファイルから7zipアーカイブを作成しようとしています。ループ増分値のバッチENABLEDELAYEDEXPANSION
私はどうやらバッチforループISNの値をインクリメント a01.7z 、 a02.7z 、 a03.7z ...
のような名前を取得するには7zipを-アーカイブを望みます簡単だ。
set /a counter=0
for %%i in (*.*) do (
call :pass2
goto :cont
:pass2
set /a counter=%counter%+1
goto :EOF
:cont
"c:\Program Files\7-Zip\7z.exe" a a%counter% "%%i"
)
これは動作しません:
SETLOCAL ENABLEDELAYEDEXPANSION溶液(窓10、64ビット)
誰かがサブルーチンでインクリメントコードを置くことを示唆し自分のコンピュータ上で動作しません。何とかDOSが最終的な "%% i"をもう理解せず、単に "%i"を出力するからです。
forループをカウンタでバッチで作成する方法を教えてください。
EnabledDelayedExpansionは異なるモードをオンにします。遅延変数は '!var!'であり、遅延拡張がオフ(通常の状態)の場合は有効な変数名です。ヘルプと説明は 'set /?'を参照してください。あなたが特に実行時に展開しない限り、通常は '%var%'という変数を参照することに注意してください。あなたが問題を抱えている理由は、コードが角括弧内にあることです。つまり、すべての行が1行として扱われます。そのため、行のブロックが読み込まれるときに変数の展開が行われます。 –
あなたのサブルーチンが間違っています。 1 /それは括弧の中にあります2/'%% I 'をパラメータとしてサブルーチンに渡すと、サブルーチンは'%1'を介してそれにアクセスします。 'call /? 'を参照してください。 3 /サブの最後に 'Goto:eof'を入れます。その後、メインルーチンはそれを飛び越える必要があります(または 'goto:eof'を介して終了する必要があります)。 'goto /? 'を参照してください。 –
私にものを教えてくれてありがとう! – Hakkelaar