我有一个批处理文件,(简化时)如下所示:

@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/

    10-10 23:37