Windows
robocopy 說它在 powershell 腳本中使用時接收到無效參數
我正在嘗試在 PowerShell 腳本中使用 robocopy,但目前失敗了。當我手動執行以下命令時
robocopy \\corporatesystem00.local.com\C$\Maven\ \\corporatesystem01.local.com\C$\Maven\ * /e /purge
我能夠將一個文件夾的所有內容複製到另一個文件夾,它就像魔術一樣工作。但是,鑑於 PowerShell 是多麼“精彩”,我想我遇到了一個未知的問題。當我從 PowerShell 腳本執行上述相同的命令時,我收到此錯誤:
PS C:\Program_Files> .\jenkins-maven-copy.ps1 Performing Jenkins Maven Sync robocopy \\corporatesystem00.local.com\C$\Maven\ \\corporatesystem01.local.com\C$\Maven\ * /e /purge ------------------------------------------------------------------------------- ROBOCOPY :: Robust File Copy for Windows ------------------------------------------------------------------------------- Started : Wednesday, July 30, 2014 3:00:03 PM Source - \\corporatesystem00.local.com\C$\Maven\ Dest - \\corporatesystem01.local.com\C$\Maven\ Files : * Options : /DCOPY:DA /COPY:DAT /R:1000000 /W:30 ------------------------------------------------------------------------------ ERROR : Invalid Parameter #4 : "/e /purge" Simple Usage :: ROBOCOPY source destination /MIR source :: Source Directory (drive:\path or \\server\share\path). destination :: Destination Dir (drive:\path or \\server\share\path). /MIR :: Mirror a complete directory tree. For more usage information run ROBOCOPY /? **** /MIR can DELETE files as well as copy them !
這發生在我為腳本中的選項輸入的任何命令行選項上。我正在執行的腳本如下。
Param ( [string]$srcLocation = '\\corporatesystem00.local.com\C$\Maven\', [string]$destLocation = '\\corporatesystem01.local.com\C$\Maven\', [string]$files = '*', [string]$options = '/e /purge' ) function syncMaven( $srcLocation, $destLocation, $files, $options ) { Write-Host "Performing Jenkins Maven Sync" Write-Host "robocopy $srcLocation $destLocation $files $options" robocopy $srcLocation $destLocation $files $options } syncMaven $srcLocation $destLocation $files $options
如果您查看之前的錯誤/輸出,它表明正在通過命令選項傳遞命令,但 robocopy 無法辨識它們或其他東西。
PS C:\Program_Files> .\jenkins-maven-copy.ps1 Performing Jenkins Maven Sync robocopy \\corporatesystem00.local.com\C$\Maven\ \\corporatesystem01.local.com\C$\Maven\ * /e /purge
所以,我很茫然。
您可能可以通過在 PowerShell 中嘗試以下操作來重現您的問題:
robocopy a b * "/e /purge"
如果這是真的,那麼參數擴展就是導致您的問題的原因。要解決這個問題,你可以走這條路:
iex "$srcLocation $destLocation $files $options"