Batch file 如何使用特殊字符在批处理文件中创建文件夹?

Batch file 如何使用特殊字符在批处理文件中创建文件夹?,batch-file,cmd,Batch File,Cmd,这将在C:\Test\Test01\Test02\Test03\Test04\Test05\Test06\Final中创建 结果应该像C:\Test\Test01\Test02\Test03\Test04\!!Test05\Test06\Final 如何使用特殊字符(!!Test05)在批处理文件中创建文件夹?,因为windows处理!作为一个特殊的角色,你需要逃避它。^符号是转义字符,类似于: @echo off setlocal EnableDelayedExpansion set "fo

这将在
C:\Test\Test01\Test02\Test03\Test04\Test05\Test06\Final
中创建

结果应该像
C:\Test\Test01\Test02\Test03\Test04\!!Test05\Test06\Final


如何使用特殊字符(
!!Test05
)在批处理文件中创建文件夹?

,因为windows处理!作为一个特殊的角色,你需要逃避它。^符号是转义字符,类似于:

@echo off
setlocal EnableDelayedExpansion

set "folder=C:\Test\Test01\Test02\Test03\Test04\!!Test05\Test06"

md %folder%\Final

echo %folder%
pause
应该行得通。请看这里:

启用时,在逐字说明或扩展普通
%
-变量时,感叹号将丢失。切换延迟扩展并使用周围的
读取受影响的变量仅用于克服此问题:

@echo关闭
setlocal DisableDelayedExpansion
rem//已禁用延迟扩展,因此保留文字感叹号:
设置“folder=C:\Test\Test01\Test02\Test03\Test04\!!Test05\Test06”
setlocal EnableDelayedExpansion
rem/*延迟扩展已启用,因此不要使用“%”扩展变量,
rem,否则您将丢失感叹号:*/
md“!文件夹!\Final”
端部
rem/*延迟扩展被禁用,变量可以用“%”扩展,
rem不丢失感叹号:*/
回显“%folder%”
端部

如果删除未使用和不需要的第二行,则命令工作正常<强>在Windows中不是一个特殊字符,但在启用延迟扩展后,它会以一种特殊的方式进行解释

@Echo关闭
设置“folder=C:\Test\Test01\Test02\Test03\Test04\!!Test05\Test06”
MD“%folder%\Final”
Echo=%folder%
超时-1

默认情况下,“延迟扩展”处于关闭状态,但这可以更改。如果您需要确保您的
显示正确,则最安全的选择是在特定代码部分之前添加行
SetLocal DisableDelayedExpansion

感谢您的帮助,抱歉,它仍然无法工作。我的意思是如果你运行这行代码,文件夹名应该是“!!Test05”@SandeepPrasad:md“C:\Test\Test01\Test02\Test03\Test04\^!^!Test05\Test06\Final”它对你有用吗?谢谢,但我需要存储在Veriable中我明白,我只是想知道它是否有效,大概是存储it部分导致了问题,因此,我们可以对此进行处理是的,它正在工作(md“C:\Test\Test01\Test02\Test03\Test04\^!Test05\Test06\Final”)
@echo off
setlocal EnableDelayedExpansion

set "folder=C:\Test\Test01\Test02\Test03\Test04\^!^!Test05\Test06"

md %folder%\Final

echo %folder%
pause