【问题标题】:Paths with spaces and wildcards带有空格和通配符的路径
【发布时间】:2013-05-08 12:24:10
【问题描述】:

我有这个循环的命令行

for /d %f in ("C:\Documents and Settings\Moi\Desktop\New Folder\*") do rmdir %f

这似乎是正确的,但即使使用双引号,它仍然会破坏路径。我试过使用十六进制等效项(0x22),但这也无济于事。有没有其他方法可以处理带有空格的路径?

如果我只是尝试

for /d %f in ("C:\Documents and Settings\Moi\Desktop\New Folder\New Folder") do rmdir %f

它保留了整个字符串,但是一旦我添加了通配符,它​​就会破坏路径。总体目标是删除该文件夹中的所有文件夹而不删除文件夹本身。

注意:这些只是尝试解决此问题时的测试文件夹,真正的文件夹可以命名为任何名称。

【问题讨论】:

    标签: cmd dos


    【解决方案1】:

    我通常使用旧的 DOS 8 字符路径来解决这个问题

    • “文档和设置”为:“docume~1”
    • “程序文件”是“progra~1”
    • “新文件夹”是newfol~1

    如果您在一个文件夹中有多个相似的名称,那么末尾的 ~1 是一个计数器

    new folder = newfol~1
    new folder2 = newfol~2
    new folderhuppla = newfol~3
    

    【讨论】:

    • 没错,这确实会专门捕获新文件夹,但这些只是测试文件夹。真正的文件夹可以任意命名。
    • 当然可以,但是任何文件夹的语法都是相同的。只需创建一个获取文件夹名称、删除所有空格、获取 6 个首字母并在其后添加 ~1 的函数。还应该检查是否有许多文件夹的名称与前六个字母相同,在这种情况下是 ~2 ~3 等等。
    • 在 Eclipse 中为我工作
    【解决方案2】:

    双引号 rmdir 参数。在批处理文件中使用时,百分比也会翻倍。

    for /d %f in ("C:\Documents and Settings\Moi\Desktop\New Folder\*") do rmdir "%f"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多