העתק קובץ בודד, בתנאי שהיעד קיים- PowerShell

exprexs

Member
פקודות העתקה, אינן תמיד צפויות כשמדובר על יעד שאיננו קיים מראש ( לפני ביצוע ההעתקה ).
מכאן הצורך לברר תחילה אם נתיב היעד קיים או לא.
הדבר אפשרי במסוף PowerShell.
בהנחה שמדובר בקובץ יחיד להעתקה, ישנן כמה פקודות שונות לצורך זה.


פק' COPY-ITEM, פקודה מובנית של פאורשל

קוד:
# PowerShell Copy-Item
$Source = "C:\Users\Ro\Documents\New Text Document.txt"
$Destination = "C:\Users\Ro\Documents\NewFolder"
Switch ((Test-Path $Destination -PathType 'Container')) {
       $True { Copy-Item -Path $Source -Destination $Destination -PassThru }
       $False { Write-Output "Destination Non-Existent. Aborting." ; Return }}
#

פק' XCOPY, פקודה של מסוף הפקודות הרגיל

קוד:
    # XCopy- Test-Path
$Source = "C:\Users\Ro\Documents\New Text Document.txt"
$Destination = "C:\Users\Ro\Documents\NewFolder"
Switch ((Test-Path $Destination -PathType 'Container')) {
       $True { XCopy $Source $Destination /y /v ;
              GCI "$Destination\$(Split-Path $Source -Leaf)" }
       $False { Write-Output "Destination Non-Existent. Aborting." ; Return }}
#
 
נערך לאחרונה ב:

exprexs

Member
ניתן לנקוט בפק' ROBOCOPY, גם אם הדבר איננו יעיל.

קוד:
# PowerShell RoboCopy.exe
$Name = 'New Text Document.txt'
$Source = "C:\Users\Ro\Documents"
$Destination = "C:\Users\Ro\Documents\Newfolder"
$Arguments = @('/IS', '/XD', '*', '/R:0', '/W:0', '/MT', '/E', '/A-:SH', '/L')
$RoboCopy = 'C:\Windows\System32\RoboCopy.exe'
$RoboCopyArgs = @($Source, $Destination, $Name, $Arguments )
Switch ((Test-Path $Destination -PathType 'Container')) {
       $True { & $RoboCopy @RoboCopyArgs ;
              GCI -Path "$Destination\$($Name)" }
       $False { Write-Output "Destination Non-Existent. Aborting." ; Return }}
#
 
נערך לאחרונה ב:
למעלה