Saya perlu menghapus satu folder yang berisi folder lain dan file di dalamnya. Saya mencoba del
dan rmdir
memerintahkan tetapi kadang-kadang gagal dengan beberapa baris kesalahan:[PATH]: The directory isn't empty.
Apakah ada alternatif yang bagus?
windows
command-line
Francesco Zanini
sumber
sumber
Jawaban:
Ini sering terjadi pada saya dengan skrip build otomatis saya.
Saya kira alasannya mungkin beberapa aplikasi yang memiliki file terbuka di direktori itu dengan "share delete". Yaitu aplikasi ini memungkinkan penghapusan file (itulah sebabnya saya pikir panggilan DeleteFile tidak gagal), tetapi file hanya akan hilang setelah aplikasi mengatakan telah menutup itu menangani.
Itu berarti file mungkin masih ada ketika
rmdir
perintah mencoba untuk menghapus folder, maka pesan kesalahan. Segera setelah itu, aplikasi mengatakan akan menutup itu menangani, file tersebut akan hilang, dan ketika Anda memeriksa folder untuk melihat file yangrmdir
sedang dibicarakan itu akan kosong.Setidaknya itu teoriku.
Solusi yang diusulkan oleh Harry Johnston terlihat bagus. Hanya saya yang akan menyisipkan jeda di antara
rmdir
perintah. Tentu saja Windows tidak memiliki perintah "pause" yang dapat skrip (koreksi: versi Windows kuno tidak, yang lebih baru - lihat komentar). Tetapi jika granularity detik sudah cukup, seseorang dapat menggunakanping
untuk membuat jeda:Jadi totalnya:
sumber
rm -rf /directory/
harus bersifat global pada semua sistem operasi.timeout /t 3
pause
perintah).Mencoba:
atau:
untuk melewati pesan konfirmasi.
sumber
del
danrmdir
tidak bertanya apa-apa, mereka hanya mengirimkan beberapa baris seperti yang ada di deskripsi.rmdir /s
akan menghapus apa pun yang mungkin untuk dihapus. Anda mungkin memiliki file yang dikunci oleh program, file read-only atau file yang Anda perlu akses administratif untuk menghapus. Tidak ada satu perintah pun yang akan menangani semua situasi itu untuk AndaAnda mungkin memiliki beberapa file yang hanya bisa dibaca, Anda dapat menggunakan opsi del / F untuk menghilangkannya
Anda juga dapat memiliki beberapa file tersembunyi dan jika Anda benar-benar yakin ingin menghapusnya, maka Anda dapat melakukannya menggunakan ini
Jika ini masih gagal, maka Anda tidak memiliki izin untuk menghapus beberapa file, atau beberapa file masih digunakan.
sumber
Saya percaya ada bug di Windows 7 (dan mungkin versi lain) yang terkadang menyebabkan gejala ini; atau mungkin ada bug dalam perangkat lunak pihak ketiga. (Apakah Anda memiliki Symantec Endpoint Protection diinstal secara kebetulan?)
Lagi pula, saya sudah sering menemukannya. Dalam kebanyakan kasus, masalah dapat diselesaikan dengan menjalankan
rd /s /q
dua atau tiga kali berturut-turut.Jika ini dalam file batch, Anda dapat melakukan sesuatu seperti ini:
sumber
Gunakan
del
pada file di dalam, lalurmdir
untuk menghapus folder.Untuk menggunakan
rmdir
metode ini untuk menghapus semua file juga, gunakan/S
switch sebelum nama direktori, dan/Q
untuk menekan meminta dihapus. Ini adalah cara terbaik untuk melakukannya, karena Anda tidak ketinggalan file apa pun. Berhati-hatilah menggunakan sakelar / Q, karena itu tidak akan memperingatkan Anda tentang atribut File Sistem atau Tersembunyisumber
Jika Anda menggunakan simpul, Anda bisa menggunakan dependensi rimraf seperti ini:
jalankan instal:
npm install rimraf -g
hapus folder:
rimraf SourceFolder
Ini membantu saya ketika mendapatkan kesalahan:
sumber
Folder versi Windows yang lebih lama (DOS, Windows 95/98 / ME),
DELTREE
setara denganRM
atauRMDIR
. Saya menggunakanDELTREE
workstation Windows 7 saya dalam file batch baik-baik saja.sumber
Saya pikir Anda bisa menggunakannya seperti ini:
sumber