【问题标题】:Copying a file with robocopy (long name and path, and many spaces) - Missing argument使用 robocopy 复制文件(长名称和路径,以及许多空格) - 缺少参数
【发布时间】:2021-05-23 20:46:07
【问题描述】:

我尝试使用 robocopy 复制文件,但 PowerShell 给我一个错误“MissingArgument”:

robocopy D:\Enciclopedia` mia\Tutorial` FATTI` DA` ME\Internet\Google\Limitare` permessi` di` alcune` celle` o` colonne` o` righe` in` Google` Sheets C:\Users\Raffaele\Desktop Protect,` hide,` and` edit` sheets` -` Computer` (Proteggere,` limitare` permessi` di` alcune` celle` o` colonne` o` righe` in` Google` Sheets)` -` Docs` Editors` Help.pdf

文件名:

Protect, hide, and edit sheets - Computer (Proteggere, limitare permessi di alcune celle o colonne o righe in Google Sheets) - Docs Editors Help.pdf

文件路径:

D:\Enciclopedia mia\Tutorial FATTI DA ME\Internet\Google\Limitare permessi di alcune celle o colonne o righe in Google Sheets

我在不同的文件上使用了相同的命令,它运行良好:

robocopy C:\Users\Raffaele\Desktop\Rapida C:\Users\Raffaele\Desktop\a BULK` MIO.pdf

您能告诉我如何解决这个问题吗?

【问题讨论】:

  • 尝试引用路径 ('C:\Users\Raffaele\Desktop\a BULK MIO.pdf') 而不是添加所有这些反引号。 (尽管这第一个非常长的路径和文件名可能会导致麻烦)。为什么会有这样 LOOOOOOOONG 的名字?

标签: powershell robocopy


【解决方案1】:

值得留意Theo's 的建议:将包含空格和其他特殊字符的文件名括在单引号中('...'逐字 values)双引号("...",如果需要字符串插值 是最简单的解决方案。[1]

虽然使用`单独转义字符,但不包含引号确实有效,但它视觉上不太明显,并且在您的情况下, 容易错过需要转义的字符

在 PowerShell 中,,() 也是需要转义才能逐字解释的元字符,而您忽略了转义它们。

因此,转义如下,使用Write-Output作为示例命令来证明名称被正确解析:

PS> Write-Output D:\Enciclopedia` mia\Tutorial` FATTI` DA` ME\Internet\Google\Limitare` permessi` di` alcune` celle` o` colonne` o` righe` in` Google` Sheets C:\Users\Raffaele\Desktop` Protect`,` hide`,` and` edit` sheets` -` Computer` `(Proteggere`,` limitare` permessi` di` alcune` celle` o` colonne` o` righe` in` Google` Sheets`)` -` Docs` Editors` Help.pdf

D:\Enciclopedia mia\Tutorial FATTI DA ME\Internet\Google\Limitare permessi di alcune celle o colonne o righe in Google Sheets
C:\Users\Raffaele\Desktop Protect, hide, and edit sheets - Computer (Proteggere, limitare permessi di alcune celle o colonne o righe in Google Sheets) - Docs Editors Help.pdf

在不带引号的命令参数中需要单独转义的元字符列表:

<space> ' " ` , ; ( ) { } | & < > @ #

注意:

  • 其中,&lt; &gt; @ # 仅在参数的开始处是特殊的。
  • 情况.(点)也需要转义,即如果参数可以在语法上解释为访问变量的属性(例如,Write-Output $env:computername.csv 不输出任何内容 - 请参阅 this answer)。
  • 如果您希望 $ 被逐字处理而不是引用变量或子表达式,您也必须对其进行转义。
  • 有关如何在 PowerShell 中解析不带引号的命令参数的完整概述,请参阅 this answer

[1] 请参阅this answer 的底部部分了解 PowerShell 字符串字面量 的一般概述,以及 this answer 了解所谓的 中的字符串插值规则>可扩展字符串 ("..."),特别是。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-09
    • 2020-08-25
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    相关资源
    最近更新 更多