Seperti judulnya, bagaimana saya bisa menyalin struktur direktori secara rekursif tetapi hanya menyertakan beberapa file. Misalnya, diberikan struktur direktori berikut:
folder1
folder2
folder3
data.zip
info.txt
abc.xyz
folder4
folder5
data.zip
somefile.exe
someotherfile.dll
File data.zip dan info.txt dapat muncul di mana saja dalam struktur direktori. Bagaimana cara menyalin struktur direktori lengkap, tetapi hanya menyertakan file bernama data.zip dan info.txt (semua file lain harus diabaikan)?
Struktur direktori yang dihasilkan akan terlihat seperti ini:
copy_of_folder1
folder2
folder3
data.zip
info.txt
folder4
folder5
data.zip
*.zip
bekerja untuk saya.Solusi alternatif yang menyalin satu file pada satu waktu dan tidak memerlukan ROBOCOPY:
Pernyataan outer for menghasilkan kombinasi jalur yang mungkin dari subdirektori in
SOURCE_DIR
dan name inFILENAMES_TO_COPY
. Untuk setiap file yang ada, xcopy dipanggil.FILE_INTERMEDIATE_DIR
memegang jalur subdirektori file yang diSOURCE_DIR
dalamnya perlu dibuatDEST_DIR
.sumber
set FILENAMES_TO_COPY=data.zip info.txt
atas menjadiset FILENAMES_TO_COPY=*.jpg
set "SOURCE_DIR=C:\Origin Test"
danset "DEST_DIR=C:\Dest Test"
. Perhatikan penempatan tanda kutip ganda.coba piping keluaran find (mis. path file) ke cpio
cpio memeriksa stempel waktu pada file target - jadi aman dan cepat.
hapus -v untuk operasi yang lebih cepat, setelah Anda terbiasa.
sumber
Jika Powershell adalah opsi, Anda dapat melakukan ini:
Kerugian utamanya adalah menyalin semua folder, bahkan jika folder itu akan kosong karena tidak ada file yang cocok dengan filter yang Anda tentukan. Jadi Anda bisa berakhir dengan pohon yang penuh dengan folder kosong, selain beberapa folder yang memiliki file yang Anda inginkan.
sumber
rm -r -ErrorAction:SilentlyContinue d:\destinationPath
sebelum menyalin untuk memperbaikinya.Terima kasih Untuk Jawaban Sebelumnya. :)
Skrip ini bernama "r4k4copy.cmd":
Ini menerima variabel "Sumber", "Tujuan", dan "Nama File". Itu juga hanya dapat menyalin jenis file tertentu atau nama file selektif.
Perbaikan apapun dipersilakan. :)
sumber
Dengan hanya temukan dan cp:
sumber
Mirip dengan solusi Paulius, tetapi file yang tidak Anda pedulikan tidak disalin kemudian dihapus:
sumber
Untuk menyalin semua file teks ke G: dan mempertahankan struktur direktori:
sumber
Itu hanya dua perintah sederhana, tetapi saya tidak akan merekomendasikan ini, kecuali file yang tidak perlu Anda salin berukuran kecil. Itu karena ini akan menyalin SEMUA file dan kemudian menghapus file yang tidak diperlukan di salinan.
Tentu, perintah kedua agak panjang, tetapi berhasil!
Selain itu, pendekatan ini tidak mengharuskan Anda mengunduh dan menginstal alat pihak ketiga (Windows 2000+ BATCH memiliki cukup perintah untuk ini).
sumber
Di Linux dan sistem UNIX lainnya, menggunakan
tar
perintah akan melakukan ini dengan mudah.Kemudian Anda akan beralih ke target dan:
Tentu saja Anda bisa menyalurkan output dari tar pertama ke tar ke-2, tetapi melihatnya bekerja dalam langkah-langkah lebih mudah untuk dipahami dan dijelaskan. Saya kehilangan cd / ke / new / path / yang diperlukan dalam perintah berikut - saya tidak ingat bagaimana melakukannya sekarang. Semoga orang lain dapat menambahkannya.
Tar (gnutar) juga tersedia di Windows, tetapi saya mungkin akan menggunakan
xcopy
metode ini sendiri di platform itu.sumber
EDIT: Jika Anda ingin mempertahankan folder kosong (yang, saat membaca ulang posting Anda, sepertinya Anda) gunakan / E daripada / S.
sumber
Menggunakan antarmuka baris perintah WinRAR, Anda dapat menyalin nama file dan / atau jenis file ke arsip. Kemudian Anda dapat mengekstrak arsip itu ke lokasi mana pun yang Anda suka. Ini mempertahankan struktur file asli.
Saya perlu menambahkan file gambar album yang hilang ke ponsel saya tanpa harus menyalin ulang musik itu sendiri. Untungnya struktur direktori di komputer dan ponsel saya sama!
Saya menggunakan:
Ini membuat arsip dengan semua file Folder.jpg di subdirektori yang tepat.
Teknik ini juga dapat digunakan untuk menyalin jenis file. Jika semua file memiliki nama yang berbeda, Anda dapat memilih untuk mengekstrak semua file ke satu direktori. Parameter baris perintah tambahan dapat mengarsipkan beberapa jenis file.
Informasi lebih lanjut di tautan yang sangat membantu ini http://cects.com/using-the-winrar-command-line-tools-in-windows/
sumber
Bagi mereka yang menggunakan Altap Salamander (pengelola file 2 panel): dalam Opsi popup Salin, cukup tentukan nama file atau topeng. Mudah.
sumber
Saya baik-baik saja dengan ekspresi reguler, malas dan tidak suka menginstal, jadi saya membuat file batch yang membuat direktori dan menyalin dengan perintah vanilla DOS. Kelihatannya melelahkan tetapi lebih cepat bagi saya daripada mengerjakan robocopy.
(.*)
ganti string"\1"
, dan klik ganti semua(.*)
ganti stringmd qqq\1\nxcopy \1 qqq\1\n
dan klik ganti semua\\([^\\^"]+)"\n
ganti\\"\n
A:\src
danB:\dest
). Matikan ekspresi reguler, cariqqq"A:\src\
gantiB:\dest\
dan klik ganti semua.md akan membuat direktori bersarang. copy mungkin akan berperilaku identik dengan xcopy dalam contoh ini. Anda mungkin ingin menambahkan / Y ke xcopy untuk menyembunyikan konfirmasi penimpaan. Anda berakhir dengan file batch seperti ini:
diulang untuk setiap file dalam daftar asli Anda. Diuji di Win7.
sumber
Untuk melakukan ini dengan drag and drop menggunakan winzip ada opsi pelestarian struktur dir. Cukup buat .zip baru di tingkat direktori yang akan menjadi root Anda dan seret file.
sumber