windows - 如何将任意字符串回显到批处理文件?

标签 windows batch-file

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

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

相关文章:

c++ - 在执行时运行应用程序的运行功能

windows - 让 .bat 在执行期间显示信息(WinSCP)

windows - 在 Windows 中使用 pandoc 批量转换文件

mysql - 如何在 Windows 中清除 MySQL 屏幕控制台?

windows - 如何用双引号输出目录中的文件列表?

batch-file - 如何使批处理文件中的命令超时?

batch-file - 使用 "rmdir"功能但保留指定目录

windows - 查找容器 id 并停止 docker 容器的 bat 脚本语法是什么

linux - 将 db2 从 Windows 迁移到 Linux

linux - 在 Perl 中查找宽度和高度最小的 jpg