ওভাররাইট ছাড়াই ফাইলগুলি অনুলিপি করুন


101

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

আমি অনুলিপি, সরানো, এক্সকপি এবং রোবোকপি দিয়ে এসেছি এবং সবচেয়ে কাছের যেটি আমি পেয়েছি তা হ'ল আপনি রোবোকপি বলতে পারেন "ক এ কপি করুন, তবে পুরানো ফাইলগুলির সাথে নতুন ফাইলগুলিকে ওভাররাইট করবেন না," তবে এটি আমার পক্ষে কার্যকর নয় । আমি xxcopy এ তাকিয়েছিলাম, কিন্তু এটি বাতিল করে দিয়েছি, কারণ আমি কোনও ভিজ্যুয়াল স্টুডিও-পরবর্তী বিল্ড ইভেন্টে তৃতীয় পক্ষের নির্ভরতা থাকতে চাই না যাতে অন্য এসভিএন ব্যবহারকারীদের সেই বিল্ডটি করার জন্য সেই সরঞ্জামটি ইনস্টল করা দরকার।

আমি ভিজ্যুয়াল স্টুডিও ২০১০-এর পোস্ট-বিল্ড ইভেন্টে একটি কমান্ড লাইন যুক্ত করতে চাই যাতে নতুন ইএফ মডেল অবজেক্টগুলির জন্য টি 4 টেমপ্লেটগুলি থেকে যে ফাইলগুলি উত্পন্ন হয় সেগুলি প্রজেক্ট ফোল্ডারে বিতরণ করতে পারে তবে বিদ্যমান বস্তুর জন্য পুনরায় জেনারেট করা ফাইল সম্ভাব্য সম্পাদিত গন্তব্য ফাইলগুলি ওভাররাইট করবেন না।

যেহেতু টি 4 টেমপ্লেটটি পুনরায় জেনারেট হয়, উত্স ফাইলটি সর্বদা নতুন থাকে এবং আমি "নতুন" স্যুইচটি নির্ভরযোগ্যভাবে ব্যবহার করতে পারি না, আমি ভাবি না।

আমি সেই আইটেমগুলির জন্য আংশিক ক্লাস ব্যবহার করি যার জন্য আমি পারি তবে আমি অন্যান্য জিনিস উত্পন্ন করি যা আংশিক ক্লাস ব্যবহার করতে পারে না (যেমন একটি ডিফল্ট এডিটর টেম্পলেট বা ডিসপ্লে-টেম্পলেট * .ভ্যাস্ক ফাইল)।

কারও কারও কি তারা অনুরূপ সমস্যা সমাধান করেছে?


আপনার সাথে পরিচিত cmd.exe'র forকমান্ড? যদি তা না হয় তবে আমি আপনাকে চালানোর পরামর্শ দিন for /?use
গাবে

উত্তর:


39
For %F In ("C:\From\*.*") Do If Not Exist "C:\To\%~nxF" Copy "%F" "C:\To\%~nxF"

5
এটি আমার পক্ষে কাজ করেছে, তবে কমান্ড লাইনের পরিবর্তে ব্যাচ ফাইলের ভিতরে থেকে এটি চালাচ্ছিলাম বলে আমার পরিবর্তে দুটি শতাংশ প্রতীক ব্যবহার করতে হয়েছিল। আমি% F এর উদাহরণগুলি %% F দিয়ে এবং% ~ nxF এর%% ~ nxF এর সাথে প্রতিস্থাপন করেছি।
ওভেন

4
কী ~nxমধ্যে %~nxFঠিক মানে?
সার্জ রোগাচ

@ স্টু, এটি কেবলমাত্র বলেছেন যে ~nxFভেরিয়েবলের জন্য Fফাইলের নাম এবং একটি এক্সটেনশনে রূপান্তরিত হয়।
সার্জ রোগাচ

হ্যাঁ, তাই কার্যকরভাবে, আমাকে ফাইলের নাম + এক্সটেনশন দিন, কোনও পথ ছাড়াই - লক্ষ্য ফোল্ডারে আপনাকে পরীক্ষা করতে হবে এবং লক্ষ্য ফাইলের নামটি নির্দিষ্ট করতে হবে। মুল বক্তব্যটি হ'ল% F পথটি অন্তর্ভুক্ত করে এবং আপনি এটি সেখানে চান না।
স্টু

209

Robocopy , বা "শক্তসমর্থ ফাইল কপি", একটি কম্যান্ড-লাইন ডিরেক্টরি রেপ্লিকেশন কমান্ড। এটি উইন্ডোজ এনটি ৪.০ দিয়ে শুরু হওয়া উইন্ডোজ রিসোর্স কিটের অংশ হিসাবে উপলব্ধ ছিল এবং এটি উইন্ডোজ ভিস্তা, উইন্ডোজ and এবং উইন্ডোজ সার্ভার ২০০৮ এর একটি আদর্শ বৈশিষ্ট্য হিসাবে চালু হয়েছিল।

   robocopy c:\Sourcepath c:\Destpath /E /XC /XN /XO

বিস্তৃত করার জন্য (হাইড্রিজারাম, হেইলগ্যালাক্সার এবং অ্যান্ডি শমিট উত্তরগুলি ব্যবহার করে):

  • /E রোবকপি খালিগুলি সহ পুনরাবৃত্তভাবে উপ-ডিরেক্টরিগুলি অনুলিপি করে।
  • /XCএকই টাইমস্ট্যাম্প সহ বিদ্যমান ফাইলগুলি বাদ দেয় তবে বিভিন্ন ফাইল আকার। রোবোকপি সাধারণত সেগুলি ওভাররাইট করে।
  • /XNগন্তব্য ডিরেক্টরিতে অনুলিপি থেকে বিদ্যমান বিদ্যমান ফাইলগুলি বাদ দেয়। রোবোকপি সাধারণত সেগুলি ওভাররাইট করে।
  • /XOগন্তব্য ডিরেক্টরিতে কপির চেয়ে পুরানো বিদ্যমান ফাইলগুলি বাদ দেয়। রোবোকপি সাধারণত সেগুলি ওভাররাইট করে।

পরিবর্তিত, পুরাতন এবং আরও নতুন ক্লাস বাদ দিয়ে, রবোকপি মূল পোস্টার যা চায় তা-ঠিক তেমন করে - স্ক্রিপ্টিং পরিবেশ লোড না করে।

তথ্যসূত্র: টেকনেট , উইকিপিডিয়া
ডাউনলোড করুন থেকে: মাইক্রোসফ্ট ডাউনলোড লিঙ্ক (লিংকটি 30 মার্চ, 2016 এ শেষবার যাচাই করা হয়েছে)


'বাদ' দিয়ে আপনি কি 'এড়িয়ে যান' বা 'মুছুন / মুছুন' বোঝাতে চান?
এয়ারট্রাইক

@ আন্ড্রে টেরা: সাধারণত এড়িয়ে যান। আপনি যদি / এমআইআর পতাকা ব্যবহার করেন তবে এটি সেগুলি সরিয়ে ফেলতে পারে। আমি এটা পরীক্ষা করিনি।
হাইড্রিজারাম

/ এমআইআর দিয়ে, উত্সে থাকা ফাইলগুলি প্রকৃতপক্ষে সরানো হয়েছে। তবে / এক্সএন এবং / এক্সও ব্যবহার করার সময়, উভয় স্থানে থাকা ফাইলগুলি সহজেই এড়িয়ে যায় (আকার চেক করা হয়েছে কিনা তা নিশ্চিত নয়)। এটি আমার পরিস্থিতির জন্য আদর্শ যেখানে আমাকে আমার অ্যাপ্লিকেশনটির নতুন বা পুরানো সংস্করণটি অনুলিপি করতে হবে তবে যেখানে অ্যাপ্লিকেশনটি ব্যবহার করে এমন লাইব্রেরির ডেটমোডিফিকড স্ট্যাম্পগুলি ভুল রয়েছে তবুও ফাইলের নামগুলি তাদের সংস্করণ নম্বর ধারণ করে।
হেন্নো ভার্মিউলেন

এটি অন্তর্ভুক্ত করা প্রয়োজন /e? আপনি যদি /sপরিবর্তে ব্যবহার করেন ? আমি একগুচ্ছ খালি সাব-ফোল্ডার চাই না।
পর্বতের সূক্ষ্মাগ্র শৈলশিরা

48

বেলিসারিয়াসের দ্রবণ ভাল।

এই সামান্য সংক্ষিপ্ত উত্তরটি বিস্তারিতভাবে বর্ণনা করতে:

  • /E রোবকপি খালিগুলি সহ পুনরাবৃত্তভাবে উপ-ডিরেক্টরিগুলি অনুলিপি করে।
  • /XCএকই টাইমস্ট্যাম্প সহ বিদ্যমান ফাইলগুলি বাদ দেয় তবে বিভিন্ন ফাইল আকার। রোবোকপি সাধারণত সেগুলি ওভাররাইট করে।
  • /XNউত্স ডিরেক্টরিতে অনুলিপি থেকে বিদ্যমান বিদ্যমান ফাইলগুলি বাদ দেয়। রোবোকপি সাধারণত সেগুলি ওভাররাইট করে।
  • /XOউত্স ডিরেক্টরিতে অনুলিপি থেকে পুরানো বিদ্যমান ফাইলগুলি বাদ দেয়। রোবোকপি সাধারণত সেগুলি ওভাররাইট করে।

পরিবর্তিত, পুরাতন এবং আরও নতুন ক্লাস বাদ দিয়ে, রবোকপি মূল পোস্টার যা চায় তা-ঠিক তেমন করে - স্ক্রিপ্টিং পরিবেশ লোড না করে।


47

আপনি এটি চেষ্টা করতে পারেন:

echo n | copy /-y <SOURCE> <DESTINATION>

-yওভাররাইট করার আগে কেবল অনুরোধ জানানো হয় এবং আমরা এই সমস্ত প্রশ্নে এন পাইপ করতে পারি। সুতরাং এটি সংক্ষেপে কেবল অ-বিদ্যমান ফাইলগুলি অনুলিপি করবে। :)


4
সুন্দর সরল।
হল্ফ

6
কেন আমরা কেবল একবার পাইপ করলে সমস্ত প্রশ্নের উত্তর দেয়?
ফুকলিভ

দুর্দান্ত, আমি এই বিকল্পটি দিয়েছিলাম went পাইপিংয়ের কথা চিন্তা করার আগে, আমি একটি পরামিতিটি গুগল করেছিলাম ভেবেছিলাম আমি অনুপস্থিত এবং তারপরে আমি এই পৃষ্ঠাটি জুড়ে এসেছি। এই সমাধানটির চেষ্টা করে আমি লক্ষ্য করেছি যে পাইপিং করার সময় অনুলিপিটি / ওয়াই প্যারামিটারটি দৃশ্যত সক্ষম করে, তাই এজন্য / -Y যুক্ত করতে হবে।
অ্যান্ড্রু

4
@ ফুক্লভিভি মনে হচ্ছে copy /-yকেবল স্বয়ংক্রিয়ভাবে ধরে নেওয়া হয় যে স্ট্যান্ডিন কোনও বার ইনপুট শেষ করে না। আপনি প্রথম স্পষ্ট nবা < nulএটিতে পাইপ বাদ দিতে পারেন এবং একই জিনিস ঘটে।
mwfearnley

6

এটি ব্যাচের ফাইল ফর্মটিতে রয়েছে:

@echo off
set source=%1
set dest=%2
for %%f in (%source%\*) do if not exist "%dest%\%%~nxf" copy "%%f" "%dest%\%%~nxf"

3

আমি নিজের পরীক্ষা থেকে কিছু স্পষ্ট করতে চাই।

@ হাইদারগেরাম লিখেছেন:

  • / এক্সএন বিদ্যমান ডিরেক্টরিগুলি উত্স ডিরেক্টরিতে অনুলিপি থেকে নতুন বাদ দেয়। রোবোকপি সাধারণত সেগুলি ওভাররাইট করে।
  • / এক্সও সোর্স ডিরেক্টরিতে থাকা অনুলিপিটির চেয়ে পুরানো বিদ্যমান ফাইলগুলি বাদ দেয়। রোবোকপি সাধারণত সেগুলি ওভাররাইট করে।

এটি আসলে পিছনের দিকে। এক্সএন "এক্স এক্সক্লুড নতুনার" ফাইলগুলি করে তবে এটি গন্তব্য ডিরেক্টরিতে থাকা অনুলিপিগুলির চেয়েও নতুন ফাইলগুলি বাদ দেয় । XO "eXcluder Older" করেন, তবে এটি গন্তব্য ডিরেক্টরিতে অনুলিপি থেকে পুরানো ফাইলগুলি বাদ দেয় ।

অবশ্যই যথারীতি নিজের পরীক্ষা করুন।


4
এটি কি মূল প্রশ্নের উত্তর, বা অন্য কারও উত্তরের মন্তব্য?
এএসজিএম

4
মূল প্রশ্নটির উত্তর লেখার সময় হিসাবে হাইড্রিজারামের উত্তরটিতে + 25 ভোট রয়েছে, বা অন্য কারও উত্তরের মন্তব্য?
মো।

3

এক্সকপি দিয়ে এটি করার একটি অদ্ভুত উপায় রয়েছে:

echo nnnnnnnnnnn | xcopy /-y source target

আপনার অনুলিপি করা ফাইলগুলির মতো কেবল এন এর অন্তর্ভুক্ত করুন এবং এটি ওভাররাইট সংক্রান্ত সমস্ত প্রশ্নের উত্তর দেবে।


সম্পর্কিত copy, এই উত্তরটি দেখুন , বিশেষত @ মিঃফায়ার্নলির মন্তব্য: copy /-yস্বয়ংক্রিয়ভাবে ধরে নেওয়া হয় nএকবার স্টিডিন নিঃশেষ হয়ে গেলে, আপনি উদাহরণস্বরূপ echo nকেবল একবারে এটি করতে পারেন এবং এটি এখনও কার্যকর হয় works
আরএসএনএন

3
robocopy src dst /MIR /XX

/ এক্সএক্স: এক্স এক্সক্লুড "এক্সট্রা" ফাইল এবং ডায়ার (গন্তব্যস্থলে উপস্থিত তবে উত্স নয়) এটি গন্তব্য থেকে কোনও মুছে ফেলা রোধ করবে। (এটি ডিফল্ট)


1

রবোকপি এখানে এমন সিস্টেমে ডাউনলোড করা যেতে পারে যেখানে এটি ইতিমধ্যে ইনস্টল করা নেই। (অর্থাৎ উইন্ডোজ সার্ভার 2003.)

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17657 (ইনস্টলেশনের জন্য কোনও রিবুট প্রয়োজন নেই)

রোবোকপি এক্সে আপনার পথ নির্ধারণ করতে ভুলবেন না। আপনি "আমার কম্পিউটার"> বৈশিষ্ট্যগুলি> উন্নত> "পরিবেশের ভেরিয়েবলস" এ ক্লিক করে এটি করেন, তারপরে পাথ সিস্টেমের পরিবর্তনশীলটি সন্ধান করুন এবং এটিকে শেষের দিকে যুক্ত করুন: "; সি: \ প্রোগ্রাম ফাইলগুলি \ উইন্ডোজ রিসোর্স কিটস \ সরঞ্জামগুলি" বা আপনি যেখানেই থাকুন এটি ইনস্টল। ইতিমধ্যে রয়েছে এমন পাথের পরিবর্তনশীল স্ট্রিংগুলি ছেড়ে যাওয়ার বিষয়টি নিশ্চিত করুন এবং অ্যাডিশনাল পাথ যুক্ত করুন end

একবার পথ নির্ধারিত হয়ে গেলে আপনি কমান্ডটি চালাতে পারেন যা বেলিসারিয়াস পরামর্শ দেয়। এটি দুর্দান্ত কাজ করে।


1

এটি আমাকে ভুল বার্তাগুলিতে সরাসরি মন্তব্য করতে দেবে না - তবে আমাকে কেবল সবাইকে সতর্ক করতে দাও, যে পূর্ববর্তী বার্তাগুলিতে পোস্ট হয়েছে তার তুলনায় / এক্সএন এবং / এক্সও বিকল্পগুলির সংজ্ঞাটি পুনরুদ্ধার করা হয়।

পুরাতন / নবীনতর ফাইলগুলি বাদ দিন বিকল্পটি রোবকোপির লগিংয়ে প্রদর্শিত তথ্যের সাথে সামঞ্জস্যপূর্ণ: রোবকপিটি উত্সের মাধ্যমে পুনরাবৃত্তি করবে এবং তারপরে সূত্রে প্রতিটি ফাইল গন্তব্যস্থলের ফাইলের চেয়ে "ওল্ডার" বা "নতুন" কিনা তা রিপোর্ট করবে।

ফলস্বরূপ, / XO পুরানো উত্স ফাইলগুলি (যা স্বজ্ঞাত) বাদ দেবে, এখানে দাবি করা হিসাবে "উত্সের চেয়ে পুরানো" নয়।

আপনি যদি কেবল নতুন বা পরিবর্তিত উত্স ফাইলগুলি অনুলিপি করতে চান তবে আরও সাম্প্রতিক গন্তব্য ফাইলগুলি প্রতিস্থাপন করা এড়াতে পারেন, তবে / এক্সও সঠিক ব্যবহারের বিকল্প option


0

দুটি ডিরেক্টরি মিরর করার জন্য / এমআইআর বিকল্পটি ব্যবহার করা একটি সহজ উপায় হবে। মূলত এটি কেবলমাত্র নতুন ফাইলগুলি গন্তব্যে অনুলিপি করবে। পরবর্তী কোমন্ডে উত্স এবং গন্তব্যটিকে আপনার ফোল্ডারে পাথগুলি প্রতিস্থাপন করুন, স্ক্রিপ্টটি কোনও এক্সটেনশন সহ যে কোনও ফাইল অনুসন্ধান করবে।

robocopy <source directory> <destination directory> *.* /MIR

0

এটিই আমার পক্ষে কাজ করেছে। আমি এটিকে ওভাররাইট ছাড়াই অন্য ড্রাইভে ফাইল যুক্ত করতে "যুক্ত" করতে ব্যবহার করি।

ব্যাচ ফাইল: রোবোকপি-মিসিংফাইলস.বাট

@echo off
echo Copying 
echo      "%1"
echo   to "%2"
echo.
echo Press Cntr+C to abort
Pause
echo.
@echo on
robocopy %1 %2 /Xo /XN /XC /J /SL /S /MT:8 /R:1 /W:1 /V /DCOPY:DAT /ETA /COPY:DATO /FFT /A-:SH /XD $RECYCLE.BIN "System Volume Information"

উদাহরণ:

robocopy-missingfiles.bat f:\Working-folder\ E:\Backup-folder\

বাস্তবায়নের আগে পরীক্ষা করুন।

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