Batch file 逃逸及;登录批处理命令行参数

Batch file 逃逸及;登录批处理命令行参数,batch-file,Batch File,我使用这个batchfile test.bat: setlocal EnableDelayedExpansion set var=%* md "c:\testfolder\!var!" 对于类似“test.bat这是一个测试”的情况,这运行得很好,但当使用特殊字符时,它不起作用。因此,“test.bat test&go”只创建文件夹“c:\testfolder\test”。如何逃脱所有的特殊角色 我尝试使用test.bat“this a&test”,但当我回音时!瓦尔!然后它用双引号呼应,我不

我使用这个batchfile test.bat:

setlocal EnableDelayedExpansion
set var=%*
md "c:\testfolder\!var!"
对于类似“test.bat这是一个测试”的情况,这运行得很好,但当使用特殊字符时,它不起作用。因此,“test.bat test&go”只创建文件夹“c:\testfolder\test”。如何逃脱所有的特殊角色

我尝试使用test.bat“this a&test”,但当我回音时!瓦尔!然后它用双引号呼应,我不想这样

FOR %%d IN (%*) DO md "u:\testfolder\%%~d"
应该可以工作(不需要启用DelayedExpansion)

它还可以创建多个目录

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

现在你必须在批处理lynch暴徒因为你创建愚蠢的目录名而抓到你之前离开小镇


修订新规定

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

通过将
&
替换为
^&
,转义
&

工作您是否尝试过
设置“var=%*”
?@endro,刚刚尝试过,不起作用!请不要忘记在命令行转义一些字符,否则会出现与批处理无关的语法错误。检查此项并将
echo“%*”
放入批处理中。感谢您的回答,它对MD有效,但我需要对输入做一些其他事情。我试着用“FOR%%d IN(%*)DO set var=%%~d”来设置var,但“test&so”仍然让我用“test”。你是如何测试的?关键是,简单地
ECHO
ing变量不起作用,因为解析器将用变量的值替换变量。我已经修改了代码来演示。