Saya memiliki berbagai "file" (bukan folder) dengan jenis yang sama (misalnya " .docx
"), di direktori yang sama.
Juga, dalam direktori SAMA, saya memiliki sub-direktori bernama " catalog
", dan dalam hal itu, folder abjad (yaitu, dimulai dengan #
, A
, B
, C
, D
, E
, F
, dan seterusnya ...).
Dengan asumsi file ini terletak di " D:/documents/
", bagaimana [Menggunakan Windows CMD, atau Windows Powershell] akan saya menyortir daftar file, dan memindahkan mereka ke dalam "katalog" folder, menjadi [case yang tepat sensitif ] "Abjad" folder , menyortir berdasarkan huruf pertama [ tidak sensitif huruf ] dari nama file mereka?
Misalnya: [ D:/documents/janet_henderson.docx
] akan pindah ke [ D:/documents/catalog/J/janet_henderson.docx
]
Harap dicatat bahwa saya perlu memiliki file dengan nama yang dimulai dengan nomor apa saja yang masuk ke D:/documents/catalog/#/
folder " ".
Apa yang saya miliki sejauh ini
Saya memiliki yang berikut dalam sebuah organize_files.bat
file:
move documents\A*.docx documents\catalog\A\
move documents\B*.docx documents\catalog\B\
move documents\C*.docx documents\catalog\C\
move documents\D*.docx documents\catalog\D\
move documents\E*.docx documents\catalog\E\
move documents\F*.docx documents\catalog\F\
move documents\G*.docx documents\catalog\G\
move documents\H*.docx documents\catalog\H\
move documents\I*.docx documents\catalog\I\
move documents\J*.docx documents\catalog\J\
move documents\K*.docx documents\catalog\K\
move documents\L*.docx documents\catalog\L\
move documents\M*.docx documents\catalog\M\
move documents\N*.docx documents\catalog\N\
move documents\O*.docx documents\catalog\O\
move documents\P*.docx documents\catalog\P\
move documents\Q*.docx documents\catalog\Q\
move documents\R*.docx documents\catalog\R\
move documents\S*.docx documents\catalog\S\
move documents\T*.docx documents\catalog\T\
move documents\U*.docx documents\catalog\U\
move documents\V*.docx documents\catalog\V\
move documents\W*.docx documents\catalog\W\
move documents\X*.docx documents\catalog\X\
move documents\Y*.docx documents\catalog\Y\
move documents\Z*.docx documents\catalog\Z\
- Apakah ada cara yang lebih baik untuk menyelesaikan operasi ini seperti meletakkannya dalam satu lingkaran mungkin?
- Bagaimana cara saya merawat file yang dimulai dengan angka?
- Apakah saya harus memberi tahu Windows CMD tidak peka huruf besar-kecil, saat memeriksa nama file?
sumber
move a*.docx catalog\a
Anda harus dapat memindahkan semua file dimulai dengan a. Salin dan lewati baris ini dalam file teks bernamamoveall.bat
26 kali dan modifikasi dengan tangan untuk setiap huruf kemudian jalankan ... atau cari beberapa kode di internet dan cobalah untuk memodifikasinya.Jawaban:
Berdasarkan pada bagaimana Anda menjelaskan ini dan contoh Anda, di bawah ini adalah beberapa contoh perintah, salin dan tempel item prompt, dan item skrip batch yang akan menyelesaikan tindakan ini seperti yang Anda jelaskan.
Asumsi
#
direktori sudah akan dibuat.MOVE
file yang sama dengan nama yang sama ke direktori di mana file dengan nama SAMA sudah ada.MOVE
dari sumber ke destintion jika file yang sama dengan nama SAMA sudah ada.Command Prompt Copy (prompt jika file sudah ada)
Batch Script (prompt jika file sudah ada)
Salinan Prompt Perintah (paksa ditimpa)
Skrip Batch (force overwrite)
Bacaan Lebih Lanjut dan Sumberdaya
sumber
OverWrite="/Y "
atauOverWrite="/-Y "
(atau kosong) dan kemudian Anda menulisMOVE %OverWrite ....
? (Saya kecanduan Linux) ;-)MOVE
perintahnya,FOR
baris juga bisaFOR %A IN %Letters% DO MOVE /Y "%SourceDir%\%~A*.*" "%DestLetterDir%\%~A\"
atauFOR %A IN %Letters% DO MOVE /-Y "%SourceDir%\%~A*.*" "%DestLetterDir%\%~A\"
. Saya pikir saya meletakkanECHO Y
alih - alih/Y
kebiasaan menggunakanXCOPY
perintah lebih dariMOVE
tetapi dua cara harus bekerja juga jadi berikan mereka kesempatan tanpaECHO Y |
.GOTO EOF
perintah terakhir?GOTO :EOF
tidak akan ada bedanya. Saya menempatkan itu di luar kebiasaan saya pikir ketika saya menulis jawaban itu. Setelah itu tidak ada salahnya dalam hal ini, tetapi dalam beberapa kasus ketika Anda membuatCALL
label ke lain, Anda dapat menggunakanGOTO :EOF
dan itu akan memastikan begitu rutin yang Anda sebut selesai, itu akan melewati kontrol kembali ke logika di mana pernah panggilan terakhir tinggalkan jika begitulah alur logika skrip batch seharusnya bekerja.