【问题标题】:Windows batch - Convert Mapped Drive Path ( with spaces ) to short pathWindows 批处理 - 将映射的驱动器路径(带空格)转换为短路径
【发布时间】:2014-10-21 13:17:22
【问题描述】:

我正在 Windows 批处理中编写一些代码,我有以下问题: 有没有办法将其中包含空格的映射驱动器路径(例如:E:\test\some text\dir1)转换为没有空格的路径?或者如何处理其中有空格的路径? PS:双引号也不起作用。

路径中的空间目前正在弄乱我的批处理脚本。

【问题讨论】:

  • 如果去掉空格,那就不是同一个路径了。告诉我们更多关于您要做什么的信息,向我们展示您的代码,并告诉我们问题出在哪里。
  • 解释为什么你认为你不能在文件名周围使用引号,并显示你的代码。可能有一种语法允许使用引号。
  • 短文件名可能在 NTFS 卷上被禁用,因此这不是一个好的通用解决方案。

标签: windows batch-file path batch-processing


【解决方案1】:

你需要这些:""

所以你的路径需要是:"E:\test\some text\dir1" 而不是 E:\test\some text\dir1

希望对你有帮助...

拜拜布赖恩

【讨论】:

    【解决方案2】:

    短文件夹名称是文件夹名称的前六个非空格字符,后跟~1,因此在您的情况下,您将使用E:\test\somete~1\dir1

    如果有多个目录具有相同的前六个字符,它们将被列为~1~2,依此类推。

    您可以使用dir /X 来查看您想要的文件夹的简称。

    【讨论】:

    • 没有可靠的公式来预测给定文件或文件夹的短名称。答案取决于创建文件/文件夹时存在的文件。此外,该算法未记录在案。
    • 仅当有四个以上的文件或文件夹具有相同的前六个非空格字符时才适用。对于少于四个具有相同前六个字符的文件或文件夹,somete~1 约定将根据How Windows Generates 8.3 File Names from Long File Names 保持一致。
    • 文档已过时且不完整。另外,这个问题比你意识到的要隐蔽得多。创建文件时,可能存在多个前 6 个字符相同的现有文件,因此最终数字不会是 1。然后,当您稍后检查时,其他文件可能已被删除。所以你可以有一个以 ~3 结尾的短名称,但没有另一个结尾 ~1。您永远不应该编写依赖于短名称预测的代码。除非您知道文件夹内容的完整历史记录以及完整的规则集,否则无法预测。
    • 是的,但他不能解析dir /x 的输出并为他正在寻找的文件夹执行find 吗?
    • 绝对没有错。我关心的只是关于如何生成短名称的陈述。但是,使用带有 ~s 修饰符的 FOR 变量来获取短文件名会更容易。
    猜你喜欢
    • 1970-01-01
    • 2010-10-08
    • 2018-06-27
    • 1970-01-01
    • 2012-04-19
    • 2010-10-27
    • 2021-08-16
    • 2012-04-30
    • 1970-01-01
    相关资源
    最近更新 更多