0

私はこのバッチファイル test.bat を使用します:

setlocal EnableDelayedExpansion
set var=%*
md "c:\testfolder\!var!"

これは、「test.bat this is a test」のように問題なく動作しますが、特殊文字が使用されている場合は動作しません。したがって、「test.bat test & go」は「c:\testfolder\test」フォルダのみを作成します。すべての特殊文字をエスケープするには?

test.bat「this a & test」を使ってみたのですが、エコーすると!var! 次に、二重引用符でエコーしますが、それは望ましくありません。

4

1 に答える 1

0
FOR %%d IN (%*) DO md "u:\testfolder\%%~d"

動作するはずです (ENABLEDELAYEDEXPANSION は必要ありません)

複数のディレクトリを作成することもできます

yourbatch "test & go" nospecial "oranges & lemons"

作成しtest & go nospecialoranges & lemons

ばかげたディレクトリ名を作成したとしてバッチ リンチの暴徒に捕まる前に、町を離れなければなりません...


新しい要件の修正。

@ECHO OFF
SETLOCAL
FOR %%d IN (%*) DO SET "var=%%~d"
SET var
ECHO =========
ECHO %var:&=^&%
ECHO ++++++++++
SET "var=%var:&=^&%"
ECHO %var%

で置き換え&^&エスケープすることで機能します&

于 2013-04-17T09:52:23.520 に答える