使用 robocopy 复制文件(长名称和路径,以及许多空格) - 缺少参数
Posted
技术标签:
【中文标题】使用 robocopy 复制文件(长名称和路径,以及许多空格) - 缺少参数【英文标题】:Copying a file with robocopy (long name and path, and many spaces) - Missing argument 【发布时间】: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 的名字?
【参考方案1】:
值得留意Theo's 的建议:将包含空格和其他特殊字符的文件名括在单引号中( 虽然使用 在 PowerShell 中, 因此,转义如下,使用 在不带引号的命令参数中需要单独转义的元字符列表: 注意: [1] 请参阅this answer 的底部部分了解 PowerShell 字符串字面量 的一般概述,以及 this answer 了解所谓的 中的字符串插值规则>可扩展字符串 ('...'
,逐字 values) 或 双引号("..."
,如果需要字符串插值) 是最简单的解决方案。[1]`
单独转义字符,但不包含引号确实有效,但它视觉上不太明显,并且在您的情况下, 容易错过需要转义的字符:,
、(
和 )
也是需要转义才能逐字解释的元字符,而您忽略了转义它们。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> ' " ` , ; ( ) | & < > @ #
< > @ #
仅在参数的开始处是特殊的。
情况,.
(点)也需要转义,即如果参数可以在语法上解释为访问变量的属性(例如,Write-Output $env:computername.csv
不输出任何内容 - 请参阅 this answer)。
如果您希望 $
被逐字处理而不是引用变量或子表达式,您也必须对其进行转义。
有关如何在 PowerShell 中解析不带引号的命令参数的完整概述,请参阅 this answer。
"..."
),特别是。
【讨论】:
以上是关于使用 robocopy 复制文件(长名称和路径,以及许多空格) - 缺少参数的主要内容,如果未能解决你的问题,请参考以下文章
Robocopy 可以与 refs 文件系统配合使用,以提高数据复制和同步的效率和可靠性