ডিরেক্টরি কাঠামোটি কীভাবে অনুলিপি করতে হয় তবে কেবলমাত্র কয়েকটি ফাইল অন্তর্ভুক্ত থাকে (উইন্ডোজ ব্যাচ ফাইলগুলি ব্যবহার করে)


103

শিরোনামে যেমন বলা হয়েছে, কীভাবে আমি পুনরাবৃত্তভাবে একটি ডিরেক্টরি কাঠামো অনুলিপি করতে পারি তবে কেবল কিছু ফাইল অন্তর্ভুক্ত করতে পারি। যেমন নিম্নলিখিত ডিরেক্টরি কাঠামো দেওয়া:

folder1
  folder2
    folder3
      data.zip
      info.txt
      abc.xyz
    folder4
    folder5
      data.zip
      somefile.exe
      someotherfile.dll

ফাইল data.zip এবং info.txt সর্বত্র ডিরেক্টরি কাঠামো আবির্ভূত হতে পারে। আমি কীভাবে সম্পূর্ণ ডিরেক্টরি কাঠামোটি অনুলিপি করতে পারি, তবে কেবলমাত্র ডাটা.জিপ এবং তথ্য.টিএসটিএস নামের ফাইলগুলি অন্তর্ভুক্ত করতে পারি (অন্য সমস্ত ফাইল উপেক্ষা করা উচিত)?

ফলাফলের ডিরেক্টরি কাঠামোটি দেখতে এমন হওয়া উচিত:

copy_of_folder1
  folder2
    folder3
      data.zip
      info.txt
    folder4
    folder5
      data.zip

উত্তর:


169

এটি কেবল ব্যাচ হতে হবে কিনা তা আপনি উল্লেখ করবেন না, তবে আপনি যদি এটি ব্যবহার করতে পারেন তবে এটি ROBOCOPYচেষ্টা করুন:

ROBOCOPY C:\Source C:\Destination data.zip info.txt /E

সম্পাদনা: খালি ফোল্ডারগুলি অন্তর্ভুক্ত করতে /Sপ্যারামিটারটি পরিবর্তন করা /Eহয়েছে।


আমি কি এই সিনট্যাক্স দিয়ে * .zip কপি করতে পারি? আমি ডেটা.জিপের পরিবর্তে কেবল * .zip লেখার চেষ্টা করেছি, তবে এটি ফাইলগুলি অনুলিপি করেনি, কেবল ফোল্ডারগুলি। আমিও চেষ্টা করেছি? .Zip
নীলস ব্রিঞ্চ

@ নিলস ব্রিঞ্চ হ্যাঁ, আপনার এটি করতে সক্ষম হওয়া উচিত। আপনি যে সঠিক কমান্ড লাইনটি ব্যবহার করছেন তা কী?
এফোরিয়া

1
রোবকপি সি: \ উত্স সি: ination গন্তব্য *। জিপ / ই
নিলস ব্রিঞ্চ

রহস্যময়। আপনি কোন ওএস ব্যবহার করছেন? আপনার কাছে প্রয়োজনীয় ফাইল / ফোল্ডারের অনুমতি আছে? আমি সবেমাত্র উইন 7 এ পরীক্ষা করেছিলাম এবং *.zipআমার পক্ষে কাজ করেছি।
আফোরিয়া

সত্যিই !? আমি উইন using.ও ব্যবহার করছি যখন আমি চেষ্টা করি তখন এটি কোনও ফাইলই অনুলিপি করে না। কেবল ফোল্ডার। আমি আবার চেষ্টা করব. (যখন আমরা এটি পেয়েছি, *। জিপ-এর চেয়ে বেশি অন্তর্ভুক্ত করার সিনট্যাক্সটি কী - আসুন *। জিপ এবং * .jpg বলি
নীলস ব্রিঞ্চ

29

একটি বিকল্প সমাধান যা একবারে একটি ফাইল অনুলিপি করে এবং আরবুকপি প্রয়োজন হয় না:

@echo off
setlocal enabledelayedexpansion

set "SOURCE_DIR=C:\Source"
set "DEST_DIR=C:\Destination"
set FILENAMES_TO_COPY=data.zip info.txt

for /R "%SOURCE_DIR%" %%F IN (%FILENAMES_TO_COPY%) do (
    if exist "%%F" (
        set FILE_DIR=%%~dpF
        set FILE_INTERMEDIATE_DIR=!FILE_DIR:%SOURCE_DIR%=!
        xcopy /E /I /Y "%%F" "%DEST_DIR%!FILE_INTERMEDIATE_DIR!"
    )
)

বিবৃতিটির জন্য বহিরাগত সাব-ডাইরেক্টরির SOURCE_DIRএবং নাম ইন- এর কোনও সম্ভাব্য পাথ সংমিশ্রণ তৈরি করে FILENAMES_TO_COPY। প্রতিটি বিদ্যমান ফাইলের জন্য এক্সকপি চাওয়া হয়েছে। FILE_INTERMEDIATE_DIRফাইলটির সাব-ডাইরেক্টরি পাথ ধারণ করে SOURCE_DIRযার মধ্যে এটি তৈরি করা দরকার DEST_DIR


1
আমার ফোল্ডার এবং সাবফোল্ডারগুলি থেকে সমস্ত ফটো অনুলিপি করা দরকার, এই ব্যাচের স্ক্রিপ্টটি সহায়তা করেছিল helped set FILENAMES_TO_COPY=data.zip info.txtset FILENAMES_TO_COPY=*.jpg
সবেমাত্র

আমি একটি ত্রুটি পাচ্ছি কারণ ফাইলের পাথটিতে ফাঁকা স্থান রয়েছে (SOURCE_DIR = "সি: \ মূল পরীক্ষা", DEST_DIR = "সি: \ পরীক্ষা পরীক্ষা", ত্রুটি: পরীক্ষা "" এই মুহূর্তে অপ্রত্যাশিত ছিল)। আমি% var% এর মাধ্যমে% var পরিবর্তন করার চেষ্টা করেছি! সর্বত্র, কিন্তু সাফল্য ছাড়া। এটি সমাধান করার উপায় সম্পর্কে কোনও সূত্র? পুরো কাঠামোটি ফাঁকা জায়গায় ফোল্ডারের নামগুলিতে পূর্ণ।
ricardo.scholz

1
চেষ্টা করুন set "SOURCE_DIR=C:\Origin Test"এবং set "DEST_DIR=C:\Dest Test"। ডাবল উদ্ধৃতিগুলির স্থান নির্ধারণ করুন।
সাকরা

13

সিপিওতে খুঁজে পাওয়ার (যেমন ফাইলের পাথ) আউটপুট পাইপ করার চেষ্টা করুন

find . -type f -name '*.jpg' | cpio -p -d -v targetdir/

সিপিও লক্ষ্যযুক্ত ফাইলগুলিতে টাইমস্ট্যাম্প পরীক্ষা করে - তাই এটি নিরাপদ এবং দ্রুত।

একবারে অভ্যাস হয়ে গেলে দ্রুত অপের জন্য -v সরান।


2
@ ক্রিশ্চিয়ানের সিপিওতে এটির নির্ভরতা রয়েছে যা স্ট্যান্ডার্ড ইনস্টলের অংশ নয়।
ক্র্যাশ ওয়ার্কস

8

পাওয়ারশেল যদি একটি বিকল্প হয় তবে আপনি এটি করতে পারেন:

Copy-Item c:\sourcePath d:\destinationPath -filter data.zip -recurse

প্রধান অসুবিধা হ'ল এটি সমস্ত ফোল্ডার অনুলিপি করে, এমনকি যদি সেগুলি খালি হয়ে যায় তবে কোনও ফাইল আপনার দ্বারা নির্দিষ্ট করা ফিল্টারটির সাথে মেলে না। সুতরাং আপনি খালি ফোল্ডারে পূর্ণ একটি গাছের সাথে শেষ করতে পারেন, সেই সাথে কয়েকটি ফোল্ডার যা আপনার পছন্দসই ফাইল রয়েছে।


এটি দ্বিতীয়বার চালানো গন্তব্য পরিবর্তন করবে। (এটি ফাইলগুলিকে একটি সাবফোল্ডারে রাখে)) আপনি যদি আমাকে জিজ্ঞাসা করেন তবে এটি নির্বোধ আচরণ। rm -r -ErrorAction:SilentlyContinue d:\destinationPathএটি ঠিক করার জন্য আপনি অনুলিপি করার আগে দৌড়াতে চান ।
মকোটো

7

পূর্ববর্তী উত্তরগুলি ধন্যবাদ। :)

এই স্ক্রিপ্টটির নাম "r4k4copy.cmd":

@echo off
for %%p in (SOURCE_DIR DEST_DIR FILENAMES_TO_COPY) do set %%p=
cls
echo :: Copy Files Including Folder Tree
echo :: http://stackoverflow.com
rem     /questions/472692/how-to-copy
rem     -a-directory-structure-but-only
rem     -include-certain-files-using-windows
echo :: ReScripted by r4k4
echo.
if "%1"=="" goto :NoParam
if "%2"=="" goto :NoParam
if "%3"=="" goto :NoParam
setlocal enabledelayedexpansion
set SOURCE_DIR=%1
set DEST_DIR=%2
set FILENAMES_TO_COPY=%3
for /R "%SOURCE_DIR%" %%F IN (%FILENAMES_TO_COPY%) do (
if exist "%%F" (
set FILE_DIR=%%~dpF
set FILE_INTERMEDIATE_DIR=!FILE_DIR:%SOURCE_DIR%=!
xcopy /E /I /Y "%%F" "%DEST_DIR%!FILE_INTERMEDIATE_DIR!"
)
)
goto :eof
:NoParam
echo.
echo Syntax: %0 [Source_DIR] [Dest_DIR] [FileName]
echo Eg.   : %0 D:\Root E:\Root\Lev1\Lev2\Lev3 *.JPG
echo Means : Copy *.JPG from D:\Root to E:\Root\Lev1\Lev2\Lev3

এটি "উত্স", "গন্তব্য" এবং "ফাইলনাম" এর পরিবর্তনশীল গ্রহণ করে। এটি কেবলমাত্র নির্দিষ্ট ধরণের ফাইল বা নির্বাচনী ফাইলের নাম অনুলিপি করতে পারে।

যে কোনও উন্নতি স্বাগত। :)


5

কেবল সন্ধান এবং সিপি সহ:

mkdir /tmp/targetdir
cd sourcedir
find . -type f -name '*.zip' -exec cp -p --parents {} /tmp/targetdir ";"
find . -type f -name '*.txt' -exec cp -p --parents {} /tmp/targetdir ";"

4

পলিয়াসের সমাধানের মতো, তবে আপনার যে ফাইলগুলির যত্ন নেই সেগুলি অনুলিপি করা হয় না তবে মুছে ফেলা হয়:

@echo OFF

:: Replace c:\temp with the directory where folder1 resides.
cd c:\temp

:: You can make this more generic by passing in args for the source and destination folders.
for /f "usebackq" %%I in (`dir /b /s /a:-d folder1`) do @echo %%~nxI | find /V "data.zip" | find /v "info.txt" >> exclude_list.txt
xcopy folder1 copy_of_folder1 /EXCLUDE:exclude_list.txt /E /I

4

সমস্ত পাঠ্য ফাইলগুলিকে জি: তে অনুলিপি করতে এবং ডিরেক্টরি কাঠামো সংরক্ষণ করতে:

xcopy *.txt /s G:

এটি কি পুনরাবৃত্তভাবে কাজ করতে পারে, যেমন সাবফোল্ডারগুলি থেকে সমস্ত .txt অনুলিপি করা এবং বেস ডিরেক্টরিটির সাথে সম্পর্কিত ডিরেক্টরি কাঠামো সংরক্ষণ করে?
মিকা 11

3

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

xcopy /E /I folder1 copy_of_folder1
for /F "tokens=1 delims=" %i in ('dir /B /S /A:-D copy_of_files ^| find /V "info.txt" ^| find /V "data.zip"') do del /Q "%i"

অবশ্যই, দ্বিতীয় কমান্ডটি দীর্ঘ ধরনের, তবে এটি কার্যকর!

এছাড়াও, এই পদ্ধতির জন্য আপনার কোনও তৃতীয় পক্ষের সরঞ্জামগুলি ডাউনলোড এবং ইনস্টল করার প্রয়োজন নেই (উইন্ডোজ 2000+ ব্যাচ এর পক্ষে যথেষ্ট কমান্ড রয়েছে)।


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

2

লিনাক্স এবং অন্যান্য ইউনিক্স সিস্টেমের অধীনে এটি ব্যবহার করে tar কমান্ডটি সহজেই এটি করতে পারে।

$ tar cvf /tmp/full-structure.tar *data.zip *info.txt

তারপরে আপনি টার্গেটে সিডব্লিউড হয়ে যাবেন এবং:

$ tar xvf /tmp/full-structure.tar 

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

$ tar cvf -  *data.zip *info.txt |  tar xvf - 

টার (গুন্নার) উইন্ডোজেও উপলব্ধ, তবে আমি সম্ভবত xcopyসেই প্ল্যাটফর্মটিতে নিজেই পদ্ধতিটি ব্যবহার করতাম।


tar cvf /tmp/full-st संरचना.tar ** / data.zip ** / info.txt আমার জন্য কাজ করেছে
সিংসনামল্ল

"Tar cvf /tmp/full-st संरचना.tar ** / data.zip ** / info.txt" এবং "tar cvf /tmp/full-st संरचना.tar" data.zip * info.txt "উভয়ই আমাকে 3 টি ত্রুটি দিয়েছে : (1) "টার: * ডেটা.জিপ: স্ট্যাট করা যায় না: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই", (2) "তারার * তথ্য। টেক্সট: স্ট্যাট করা যায় না: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই", (3) "টার: এর সাথে প্রস্থান করা হচ্ছে পূর্ববর্তী ত্রুটির কারণে ব্যর্থতার স্থিতি "। আমি কি সবগুলি ফোল্ডার থেকে করব? আমি এই পদ্ধতি বুঝতে পারি না।
ব্যবহারকারী 1271772

প্রশ্নটি উইন্ডোজ বলছে
আনফেলিপ

উইন 10 এর ডাব্লুএসএল রয়েছে যা এটি বৈধ করে তোলে। উইন্ডোতে ট্যার 20+ বছরের জন্য উপলব্ধ এবং একটি পাইপের ব্যবহার এমএস-ডস দিন থেকে কাজ করে। যে কোনও শেল পরিবেশে, পিডব্লিউডি গুরুত্বপূর্ণ। পিডব্লিউডি - বর্তমান ওয়ার্কিং ডিরেক্টরি। আমি স্বীকার করব যে এই সমাধানটি শেষ ব্যবহারকারীদের জন্য কম এবং পাওয়ার-ব্যবহারকারী বা প্রোগ্রামারদের পক্ষে বেশি।
জনপি

1
XCOPY /S folder1\data.zip copy_of_folder1  
XCOPY /S folder1\info.txt copy_of_folder1

সম্পাদনা: আপনি যদি খালি ফোল্ডারগুলি সংরক্ষণ করতে চান (যা আপনার পোস্টটি পুনরায় পড়ার সময় মনে হয়) / এস এর পরিবর্তে / ই ব্যবহার করেন।


1
এটি ফোল্ডার কাঠামো সংরক্ষণ করে না।
পলিয়াস

/ ই বিকল্পটি ফোল্ডার কাঠামো সংরক্ষণ করে, প্রয়োজনে খালি ফোল্ডার তৈরি সহ। ফাইলের নামটি ওয়াইল্ডকার্ডের সাথেও কাজ করে (যেমন ফোল্ডার 1 \ *। জিপ)। আমি কেবল তখনই "ফাইলটি খুঁজে পাইনি ত্রুটি পেয়েছি" যখন আমি এটির একটি সম্পূর্ণ ফাইলের নামটি উপস্থিত করি যা বিদ্যমান নেই (এই ক্ষেত্রে আমি "ফাইলটি পাই নি - xxx.xxx 0 ফাইল (গুলি) অনুলিপি করা হয়েছে" "যখন আমি এটি একটি প্যাটার্ন দিই এটি কোনও ফাইল দেয় না (যেমন ফোল্ডার 1 \ *। zzz), আমি কেবল "0 ফাইল (* গুলি) অনুলিপি
পেয়েছি

1

উইনআরআর কমান্ড লাইন ইন্টারফেস ব্যবহার করে আপনি ফাইলের নাম এবং / অথবা ফাইলের ধরণগুলি একটি সংরক্ষণাগারে অনুলিপি করতে পারেন। তারপরে আপনি নিজের পছন্দ মতো যে স্থানে সেই সংরক্ষণাগারটি বের করতে পারেন। এটি মূল ফাইল কাঠামো সংরক্ষণ করে।

আমার নিজের মোবাইল ফোনে হারিয়ে যাওয়া অ্যালবামের চিত্র ফাইলগুলি সঙ্গীতটি আবার না খালি ছাড়াই দরকার ছিল। ভাগ্যক্রমে আমার কম্পিউটার এবং মোবাইলে ডিরেক্টরি কাঠামো একই ছিল!

আমি ব্যবহার করতাম:

   rar a -r C:\Downloads\music.rar X:\music\Folder.jpg
  • সি: \ ডাউনলোডগুলি \ music.rar = সংরক্ষণাগার তৈরি করতে হবে
  • এক্স: \ সংগীত \ = ফোল্ডারে সঙ্গীত ফাইল রয়েছে
  • Folder.jpg = ফাইল নামটি আমি অনুলিপি করতে চেয়েছিলাম

এটি যথাযথ উপ-ডিরেক্টরিতে সমস্ত ফোল্ডার.জেপিজি ফাইল সহ একটি সংরক্ষণাগার তৈরি করেছে।

এই কৌশলটি ফাইলের প্রকারগুলিও অনুলিপি করতে ব্যবহৃত হতে পারে। ফাইলগুলির সকলের আলাদা আলাদা নাম থাকলে আপনি একক ডিরেক্টরিতে সমস্ত ফাইল বের করতে বেছে নিতে পারেন। অতিরিক্ত কমান্ড লাইন প্যারামিটারগুলি একাধিক ফাইলের ধরণ সংরক্ষণাগারভুক্ত করতে পারে।

এই খুব সহায়ক লিংক এ আরো তথ্য http://cects.com/using-the-winrar-command-line-tools-in-windows/



0

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

  1. পাঠ্য ফাইলে যদি এনইসি থাকে তবে ড্রাইভ লেটার সহ সম্পূর্ণ পাথ সহ আপনার উত্স ফাইলগুলির তালিকা তৈরি করুন।
  2. আপনার পাঠ্য সম্পাদকটিতে নিয়মিত প্রকাশগুলি স্যুইচ করুন।
  3. স্পেসের ক্ষেত্রে প্রতিটি লাইনে দ্বিগুণ উদ্ধৃতি যুক্ত করুন - স্ট্রিং (.*)প্রতিস্থাপন করুন স্ট্রিং"\1" এবং প্রতিস্থাপন ক্লিক করুন
  4. প্রতি ফাইল দুটি লাইন তৈরি করুন - একটি ডিরেক্টরি তৈরি করতে হবে, একটি ফাইল অনুলিপি করুন (qqq প্রতিস্থাপনের পথ দিয়ে প্রতিস্থাপন করা হবে) - অনুসন্ধান স্ট্রিং স্ট্রিং (.*)প্রতিস্থাপন md qqq\1\nxcopy \1 qqq\1\nকরুন এবং সমস্ত প্রতিস্থাপন ক্লিক করুন
  5. গন্তব্য পথগুলি থেকে ফাইলের নাম সরিয়ে ফেলুন - অনুসন্ধান \\([^\\^"]+)"\nপ্রতিস্থাপন\\"\n
  6. গন্তব্য পথে প্রতিস্থাপন করুন (এই উদাহরণে A:\srcএবং B:\dest)। নিয়মিত এক্সপ্রেশন বন্ধ করুন, qqq"A:\src\প্রতিস্থাপন অনুসন্ধান B:\dest\করুন এবং প্রতিস্থাপন ক্লিক করুন।

এমডি নেস্টেড ডিরেক্টরি তৈরি করবে। অনুলিপি সম্ভবত এই উদাহরণে এক্সকপির সাথে অভিন্ন আচরণ করবে। ওভাররাইট কনফার্মেশনগুলি দমন করতে আপনি xcopy এ / Y যুক্ত করতে চাইতে পারেন। আপনি যেমন একটি ব্যাচ ফাইল দিয়ে শেষ:

md "B:\dest\a\b\c\"
xcopy "C:\src\a\b\c\e.xyz" "B:\dest\a\b\c\e.xyz"

আপনার মূল তালিকার প্রতিটি ফাইলের জন্য পুনরাবৃত্তি। উইন 7-তে পরীক্ষা করা হয়েছে।


-1

ড্র্যাগ এবং ড্রপ ব্যবহার উইনজিপ দিয়ে এটি করার জন্য একটি সন্নিবেশ কাঠামো সংরক্ষণ বিকল্প রয়েছে। কেবলমাত্র ডিরেক্টরি স্তরে একটি নতুন .zip তৈরি করুন যা আপনার মূল এবং ড্রেগ ফাইলগুলি হবে।


ধন্যবাদ, তবে আমি স্ক্রিপ্ট (ব্যাচ) ফাইলগুলি থেকে ব্যবহার করার একটি সমাধান খুঁজছিলাম। সুতরাং, কোনও টেনে আনুন এবং ছাড়ুন না ...
M4N
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.