-2

NOTE:これは重複ではありません!! の"Temporarily interrupt SETLOCAL"

SETLOCAL ENABLEDELAYEDEXPANSIONその後、何かを実行してから、ENDLOCAL ENABLEDELAYEDEXPANSION別の処理 (7z コマンド) を実行してからSETLOCAL ENABLEDELAYEDEXPANSION、もう一度 .bat で実行できるようにしたいと考えています。7z.exe が許可しないためSETLOCAL ENABLEDELAYEDEXPANSIONです。見る?

コード:

SETLOCAL ENABLEDELAYEDEXPANSION
Echo hi!
7z e -o"C:\test" -i!*.jar "C:\*.zip"

出力:
hi!
Error: incorrect command line

コードを次のように変更すると:

Echo hi!
7z e -o"C:\test" -i!*.jar "C:\*.zip"

できます!!!!!!

これまでのところ中断するコードは次のとおりですがSETLOCAL ENABLEDELAYEDEXPANSION、残念ながら機能しません。

SETLOCAL ENABLEDELAYEDEXPANSION
Echo hi!
Endlocal
7z e -o"C:\test" -i!*.jar "C:\*.zip"
SETLOCAL ENABLEDELAYEDEXPANSION
Echo hi!

SETLOCAL ENABLEDELAYEDEXPANSIONこれを実行する必要がある別の.batに入れたい

4

2 に答える 2

1

次の方法で問題を解決できます。

set bang=!
SETLOCAL ENABLEDELAYEDEXPANSION
Echo hi!
7z e -o"C:\test" -i!bang!*.jar "C:\*.zip"

set bang=!遅延展開が無効になっているときにコマンドが実行されることを確認してください。

于 2013-08-24T19:35:05.790 に答える
1

7zip は遅延展開の問題はありません。
これは感嘆符です。7z に表示される前に行から削除されます。

それらをエスケープする必要があるだけです。

SETLOCAL ENABLEDELAYEDEXPANSION
Echo hi^^!
7z e -o"C:\test" -i^^!*.jar "C:\*.zip"
于 2013-08-25T07:15:37.753 に答える