我有一个批处理文件,它(简化后)如下所示:
@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(下一个版本)
无法回显,因为括号必须^
转义。MyProgram O&O
无法回显,因为&
符号MyProgram!
由于!
符号而无法回显
是否有适用于所有此类情况(包括组合和嵌套等)的解决方案?
(ASCII 很好 - 我现在不需要 Unicode 支持。)
最佳答案
编辑:采取 2...
For /D %%f In (*) Do (
Set "Text=%%~dpnxf"
SetLocal EnableDelayedExpansion
Echo.!Text!>>files.txt
EndLocal
)
关于windows - 如何将任意字符串回显到批处理文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7225724/