Bagaimana kamu menginginkannya?
Bagi saya kurang jelas bagaimana seharusnya hasilnya -- haruskah diratakan atau haruskah juga bersifat hierarkis?
Lihat ini misalnya:
source
folder-1
folder-1-1
image1.jpg
folder-1-2
image2.jpg
cheese.jpg
image3.jpg
some_text.txt
folder-2
folder-2-1
image3.jpg
some_music.mp3
cheese.jpg
target
Apakah hasilnya pada dasarnya merupakan salinan hierarki yang ditampilkan (tanpa file apa pun selain jpg), atau haruskah berupa hasil datar seperti ini:
source
... (see above)
target
image1.jpg
image2.jpg
cheese.jpg
image3.jpg
image3.jpg
Bagaimana kamu melakukannya?
Ratakan
Anda dapat menggunakan perintah for
DOS untuk menelusuri direktori1 dan membuat fungsi khusus2 untuk menangani file:
@ECHO OFF
for /r %%f in (*.jpg) do call:copyFile %%f
GOTO END
:copyFile
copy /V /-Y %~1 ..\target
GOTO:EOF
:END
Artinya: for
setiap %%f
dalam daftar *.jpg
dari direktori kerja saat ini, jalankan fungsi copyFile
. Tombol /r
membuat daftar berulang (menelusuri semua subdirektori).
Dalam fungsi tersebut, argumen yang diteruskan ke sana (sekarang dikenal sebagai %~1
) diteruskan ke fungsi salin: Salin file ke direktori target yaitu ..\target
dalam kasus ini. /V
memungkinkan menyalin memverifikasi hasilnya, /-Y
memungkinkan meminta izin untuk menimpa file. Lihat copy /?
!
Masalah yang sangat besar: Jika Anda memiliki satu atau lebih file di subfolder berbeda dari direktori sumber Anda, yang memiliki nama yang sama (seperti dua cheese.jpg
dalam contoh saya), Anda akan kehilangan data!< /kuat>
Jadi, saya tidak akan merekomendasikan pendekatan ini, karena Anda berisiko kehilangan data (kamera digital tidak terlalu kreatif dalam memberi nama gambar!).
Hierarki
Cukup gunakan robocopy
:
robocopy /S <sourcedir> <targetdir> *.jpg
/S
membuat dan menyalin subfolder juga. Anda juga dapat menggunakan /DCOPY:T
untuk membuat direktori memiliki stempel waktu yang sama dengan yang asli atau /L
untuk melihat pratinjau tindakan robocopy.
Masalah kecil: Switch /E
juga menangani subfolder, meskipun subfolder kosong. /S
menangani subfolder juga, tetapi tidak jika subfolder tersebut kosong. Tetapi menanganinya, jika tidak kosong, namun tidak memiliki JPG di dalamnya -- jadi, subfolder tanpa JPG akan menghasilkan folder kosong di folder target.
Robocopy memiliki banyak parameter, jadi periksa robocopy /?
.
Semoga ini membantu! :-)
1Ditemukan di sini: Bagaimana cara melintasi pohon folder/subpohon dalam file batch windows?
2Ditemukan di sini: http://www.dostips.com/DtTutoFunctions.php
person
Kurtibert
schedule
17.11.2014