আমি কীভাবে কোনও ডিরেক্টরি অনুলিপি করে এটির বিষয়বস্তুগুলি পাওয়ারশেল ব্যবহার করে বিদ্যমান থাকলে তা অনুলিপি করতে পারি?


9

আমার এতে কয়েকটি ফাইল সহ একটি ডিরেক্টরি উত্স রয়েছে, যা আমি একটি ফোল্ডারে গন্তব্যস্থলে অনুলিপি করতে চাই। গন্তব্য উপস্থিত থাকতে পারে এবং এর মধ্যে এটিতে ফাইল থাকতে পারে। উত্স অনুসারে একই নামের কোনও ফাইল ওভাররাইট করা উচিত।

যদি আমি পাওয়ারশেলের মধ্যে এটি চালনা করি:

Copy-Item Source Destination -Force -Recurse
Copy-Item Source Destination -Force -Recurse
Copy-Item Source Destination -Force -Recurse

তারপরে প্রথম লাইনটি ফোল্ডারটি তৈরি করে .\Destinationএবং এতে অনুলিপি .\Sourceকরে, যা আমি পরবর্তী সময়ের জন্য পুনরাবৃত্তি করতে চাই। তবে দ্বিতীয় লাইনের পরিবর্তে .\Sourceনতুন .\Destinationফোল্ডারে অনুলিপি করা (তৈরি করা .\Destination\Source), তারপরে তৃতীয় লাইন .\Destination\Sourceআবার ওভাররাইট হয়।

আমি কীভাবে এটিকে প্রথম ক্ষেত্রে প্রথম বারের মতো কাজ করতে পারি? অর্থাৎ এটি .\Destinationঅনুলিপি করার পরিবর্তে ওভাররাইট ?


আপনি কি স্পষ্ট করতে পারেন? আপনি কি "উত্স" এর বিষয়বস্তুগুলিকে "গন্তব্যে" অনুলিপি করতে চান? এবং "উত্স" ফোল্ডারটি "গন্তব্যে" অনুলিপি করবেন না?
ব্রোসায়েন্স

হ্যাঁ, এটা সঠিক। "গন্তব্য" ফোল্ডারটি উপস্থিত নাও থাকতে পারে, তাই আমি চাই যে এটি প্রস্থান না হলে এটি তৈরি করা হোক।
ডগলাস

এটি একটি বিকল্প হিসাবে রোবোকপি বিবেচনা করা মূল্যবান হতে পারে । আপনার যদি প্রয়োজন হয় তবে আপনি এটিকে পাওয়ারশেল থেকে কল করতে পারেন। এটি if existsইস্যুটি সহজেই পরিচালনা করবে এবং আপনার নিজের গন্তব্যগুলির সাথে পুনরায় জোর করে আপনার গন্তব্য মুছতে বাধ্য করবে না।
জেরেমি

ঘনিষ্ঠভাবে সম্পর্কিত তাই প্রশ্ন: stackoverflow.com/q/47964451/45375
mklement0

উত্তর:


7

সুতরাং সমস্যাটি হ'ল

cp -r -fo foo bar

শুধুমাত্র কাজ করে যদি barনা থাকে এবং

cp -r -fo foo/* bar

শুধুমাত্র barউপস্থিত থাকলে কাজ করে । কাজেই কাজ করার জন্য আপনাকে barকিছু করার আগে অবশ্যই নিশ্চিত হওয়া দরকার

md -f bar
cp -r -fo foo/* bar

3

আপনি যদি কেবলমাত্র "উত্স" ফোল্ডার ব্যবহারের সামগ্রীগুলি অনুলিপি করতে চান তবে

copy-item .\source\* .\destination -force -recurse

1
এটি কেবলমাত্র যদি destinationইতিমধ্যে বিদ্যমান থাকে তবে কাজ করে ।
স্টিভেন পেনি

3

স্টিভেন পেনির উত্তর https://superuser.com/a/742719/126444 লক্ষ্য ডিরেক্টরিটির মূল বিষয়বস্তু মুছবে না, কেবল এতে যুক্ত হচ্ছে। উত্সের সামগ্রী সহ আমি লক্ষ্য ফোল্ডারটি পুরোপুরি প্রতিস্থাপন করতে এবং 2 টি ক্রিয়াকলাপ তৈরি করেছিলাম:

function CopyToEmptyFolder($source, $target )
{
    DeleteIfExistsAndCreateEmptyFolder($target )
    Copy-Item $source\* $target -recurse -force
}
function DeleteIfExistsAndCreateEmptyFolder($dir )
{
    if ( Test-Path $dir ) {
    #http://stackoverflow.com/questions/7909167/how-to-quietly-remove-a-directory-with-content-in-powershell/9012108#9012108
           Get-ChildItem -Path  $dir -Force -Recurse | Remove-Item -force -recurse
           Remove-Item $dir -Force

    }
    New-Item -ItemType Directory -Force -Path $dir
}

1

আসুন বলে নিই যে আপনার নীচের ডিরেক্টরিগুলির কাঠামো রয়েছে

  • মূল

    • folder_a
      • a.txt
      • b.txt
      • c.txt
    • folder_b
      • a.txt
      • b.txt

    রুট ফোল্ডারে আপনি নিম্নলিখিত কমান্ডের ক্রম অনুসারে ফলাফলগুলি অর্জন করতে পারেন:

    $files = gci ./folder_b -name
    cp ./folder_a/*.txt -Exclude $files ./folder_b

কেবল c.txt অনুলিপি করা হবে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.