Saya memerlukan perintah yang dapat dijalankan dari baris perintah untuk membuat folder untuk setiap file (berdasarkan nama file) dalam direktori dan kemudian memindahkan file ke folder yang baru dibuat.
Contoh:
Folder mulai:
Dog.jpg
Cat.jpg
Perintah berikut bekerja sangat baik untuk membuat folder untuk setiap nama file di direktori kerja saat ini.
for %i in (*) do md "%~ni"
Folder Hasil:
\Dog\
\Cat\
Dog.jpg
Cat.jpg
Saya perlu mengambil satu langkah lebih jauh dan memindahkan file ke folder.
Yang ingin saya capai adalah:
\Dog\Dog.jpg
\Cat\Cat.jpg
Bisakah seseorang membantu saya dengan satu perintah untuk melakukan semua ini?
windows
batch-file
Tom
sumber
sumber
for %i in (*) do cmda && cmdb
B) bisa gema pertamafor %i in (*) do @ECHO cmda && cmdb
C) bisa menambahkan saya pikir itu a / R untuk pergi melalui subdirs.for %i in (*) do move "%~i" "%~ni"
Bahkan itu mungkin tidak cukup baik, karena dapat memiliki efek samping ketika folder target tidak ada (mis. File sedang "dipindahkan" dengan sendirinya, maka diganti namanya). Solusi mudah adalah dengan menggabungkan kedua perintah, seperti ini:for %i in (*) do md "%~ni" && move "%~i" "%~ni"
Perintah ini mengasumsikan bahwa direktori belum ada.cmda && cmdb
makacmdb
akan dieksekusi hanya jikacmda
berhasil. Jika Anda menggunakancmda & cmdb
sebagai gantinya, maka perintah kedua akan dieksekusi terlepas. Faktanya, satu ampersand (&
) hanyalah pemisah perintah dan double ampersand (&&
) adalah yang bersyarat . Perintah yang tidak menetapkanerrorlevel
nilai tidak boleh digunakan dengan yang terakhir.Cukup jalankan perintah ini secara seri:
Untuk membuat folder untuk setiap file:
Untuk memindahkan setiap file ke foldernya:
sumber
Ini akan melakukannya jika Anda memiliki beberapa folder seperti: contoh tahun \ Filename.mp4
itu akan mencantumkan semua folder file tingkat 1; daftar semua * .mp4 dan * .mkv akan membuat folder 2 level dengan nama file dan akan memindahkan semua file nama yang sama di folder level 1 ke folder level 2, jalankan di folder basis tahun.
Jika Anda tidak memiliki folder TAHUN 1 tingkat, Anda dapat mem-bypass yang pertama untuk dan menjalankan langkah ke-2, jalankan di folder basis nama file.
&& akan memastikan bahwa mkdir% ERRORLEVEL% sebelumnya adalah 0 untuk menjalankan perpindahan file
Untuk menguji, gunakan ini:
sumber