powershell - बड़ी फ़ाइल प्रतिलिपि के दौरान प्रगति(कॉपी-आइटम और लिखें-प्रगति?) - हल किया
powershell - बड़ी फ़ाइल प्रतिलिपि के दौरान प्रगति(कॉपी-आइटम और लिखें-प्रगति?)
progress-bar progress (6)
यह रिकर्सिव फ़ंक्शन स्रोत पथ से गंतव्य पथ तक रिकर्सली फ़ाइलों और निर्देशिकाओं की प्रतिलिपि बनाता है
यदि गंतव्य पथ पर फ़ाइल पहले से मौजूद है, तो यह केवल उन्हें नई फ़ाइलों के साथ कॉपी करती है।
Function Copy-FilesBitsTransfer(
[Parameter(Mandatory=$true)][String]$destinationPath,
[Parameter(Mandatory=$false)][bool]$createRootDirectory = $true)
$item = Get-Item $sourcePath
$itemName = Split-Path $sourcePath -leaf
if (!$item.PSIsContainer){ #Item Is a file
$clientFileTime = Get-Item $sourcePath | select LastWriteTime -ExpandProperty LastWriteTime
if (!(Test-Path -Path $destinationPath\$itemName)){
Start-BitsTransfer -Source $sourcePath -Destination $destinationPath -Description "$sourcePath >> $destinationPath" -DisplayName "Copy Template file" -Confirm:$false
$serverFileTime = Get-Item $destinationPath\$itemName | select LastWriteTime -ExpandProperty LastWriteTime
if ($serverFileTime -lt $clientFileTime)
else{ #Item Is a directory
if ($createRootDirectory){
$destinationPath = "$destinationPath\$itemName"
if (!(Test-Path -Path $destinationPath -PathType Container)){
if (Test-Path -Path $destinationPath -PathType Leaf){ #In case item is a file, delete it.
Remove-Item -Path $destinationPath
New-Item -ItemType Directory $destinationPath | Out-Null
Foreach ($fileOrDirectory in (Get-Item -Path "$sourcePath\*"))
$status = Copy-FilesBitsTransfer $fileOrDirectory $destinationPath $true
क्या PowerShell में वास्तव में बड़ी फ़ाइल (एक सर्वर से दूसरे में) की प्रतिलिपि बनाने और इसकी प्रगति प्रदर्शित करने का कोई तरीका है?
कई फाइलों की प्रतिलिपि बनाने और प्रगति प्रदर्शित करने के लिए लूपिंग के साथ संयोजन में लिखें-प्रगति का उपयोग करने के लिए वहां समाधान हैं। हालांकि मुझे ऐसा कुछ भी नहीं मिल रहा है जो एक फ़ाइल की प्रगति दिखाएगा।
ट्रेवर सुलिवान के पास Copy-ItemWithProgress पर Copy-ItemWithProgress को Copy-ItemWithProgress नामक कमांड जोड़ने के तरीके पर एक लिखना है।
यह नही है कि मैं जानता हूँ। मैं इसके लिए कॉपी-आइटम का उपयोग करने की सलाह नहीं दूंगा। मुझे नहीं लगता कि इसे पुनः प्रयास करने के लिए robocopy.exe जैसे मजबूत होने के लिए डिज़ाइन किया गया है जिसे आप नेटवर्क पर अत्यधिक बड़ी फ़ाइल प्रतियों के लिए चाहते हैं।
यह बिट्सट्रांसफर का उपयोग करने के लिए एक बेहतर समाधान की तरह प्रतीत होता है, ऐसा लगता है कि अधिकांश विंडोज मशीनों पर PowerShell 2.0 या इससे अधिक के साथ ओओटीबी आती है।
अरे, सीनियर गाय से शॉन कियरनी ! ब्लॉग में एक समाधान है जो मुझे बहुत अच्छी तरह से काम करता है।
$Filelist=Get-Childitem "$Source" –Recurse
$Total=$Filelist.count
$Position=0
Write-Progress -Activity "Copying data from '$source' to '$Destination'" -Status "Copying File $Filename" -PercentComplete (($Position/$total)*100)
Copy-Item $File.FullName -Destination $DestinationFile
फिर इसका इस्तेमाल करने के लिए:
Copy-WithProgress -Source $src -Destination $dest
मैंने Copy-Item साथ प्रगति के बारे में नहीं सुना है। यदि आप किसी बाहरी उपकरण का उपयोग नहीं करना चाहते हैं, तो आप धाराओं के साथ प्रयोग कर सकते हैं। बफर का आकार भिन्न होता है, आप विभिन्न मानों को आजमा सकते हैं (2kb से 64kb तक)।
Write-Progress -Activity "Copying file" -status "$from -> $to" -PercentComplete 0
Write-Progress -Activity "Copying file" -status "$from -> $to" `
Write-Progress -Activity "Copying file" -Status "Ready" -Completed
powershell progress-bar progress copying copy-item
पावरहेल के साथ दूरस्थ रूप से फ़ाइल कॉपी करें