我有一个批处理文件,(简化时)如下所示:
@Echo Off
SetLocal EnableDelayedExpansion
MD "MyProgram^!"
MD "MyProgram version 2"
MD "MyProgram (next version)"
MD "MyProgram O&O"
Del Folders.txt
Call :AddFoldersRecursive .
EndLocal
Goto :EOF
:AddFoldersRecursive FolderPath
Echo %~1>>Folders.txt
For /D %%f In ("%~1\*") Do Call :AddFoldersRecursive "%%~f"
Goto :EOF
在不同情况下面对不同类型的文件名时,它会引发各种错误:
MyProgram version 2
无法回显,因为2>>
的解释不正确。 MyProgram (next version)
无法回显,因为必须将括号转义为^
。 MyProgram O&O
无法回显,因为&
符号MyProgram!
由于!
符号有什么解决方案适用于和所有这样的情况(包括组合和嵌套等)吗?
(ASCII码很好-我现在不需要Unicode支持。)
最佳答案
编辑:取2 ...
For /D %%f In (*) Do (
Set "Text=%%~dpnxf"
SetLocal EnableDelayedExpansion
Echo.!Text!>>files.txt
EndLocal
)
关于windows - 如何将ARBITRARY字符串回显到批处理文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7225724/