如何处理带空格的目录?

时间:2019-05-15 16:28:40

标签: powershell robocopy

我想将PowerShell与robocopy一起使用来移动大量文件。如果任何目录中没有空格,则下面的代码有效。我该如何改进以处理带有空格的目录?

$workingDirectory = Split-Path -Parent $PSCommandPath
$sourceDir = "$workingDirectory\source folder"
$targetDir = "$workingDirectory\target folder"
$logFile = "$workingDirectory\log.txt"
$options = "/copyall /b /is /r:5 /w:5 /log:$logFile"
Start-Process robocopy -args "$sourceDir $targetDir $options" -NoNewWindow -PassThru -Wait

3 个答案:

答案 0 :(得分:1)

不知道具体错误,很难确切地说出。您可以在$sourceDir$targetDir周围添加转义的引号,以便PowerShell在启动执行robocopy的新进程时不会删除引号。

Start-Process robocopy -args `"$sourceDir`", `"$targetDir`", $options -NoNewWindow -PassThru -Wait

答案 1 :(得分:1)

好的,我在使用Start-Process时看到错误:

ERROR : Invalid Parameter #3 : "...\target"

但是,直接运行robocopy不需要特殊的引用。请注意,/ copyall需要管理员权限。

robocopy $sourcedir $targetdir /copyall /b /is /r:5 /w:5 /log:$logFile

答案 2 :(得分:0)

基于Ansgar Wiechers的评论,我得以弄清楚。谢谢:-)

$workingDirectory = Split-Path -parent $PSCommandPath
$SourceDir = "$workingDirectory\source folder"
$targetDir = "$workingDirectory\target folder"
$logFile = "$workingDirectory\log.txt"
$options = "/copyall /b /is /r:5 /w:5 /log:$logFile"
& robocopy "$sourceDir" "$targetDir" /copyall /b /is /r:5 /w:5 "/log:$logFile"