我想将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
答案 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"