Saya mendapat beberapa folder yang dibuat oleh malware yang namanya diakhiri dengan titik seperti C:\a.\
atau C:\b.\
, dll.
Saya menemukan solusi yang dapat menghapus folder tersebut dengan perintah rd /q /s "C:\a.\"
tetapi jika saya memanggil win API RemoveDirectory
, itu kembali ERROR_FILE_NOT_FOUND
.
Dan saya hanya ingin tahu bagaimana menulis fungsi untuk menghapus direktori tersebut, terima kasih
Saya menguji sistem Windows XP SP3 saya sendiri seperti ini
buat folder C:\>mkdir a..\\\
dan saya tidak dapat mengklik dua kali untuk mengakses folder ini. dan saya dapat menghapus dengan perintah rd /q /s "C:\a.\"
API sistem Windows apa yang rd /q /s
dipanggil oleh perintah itu?
Jawaban:
Inilah solusi untuk masalah ini :
rd /s "\\?\C:\Documents and Settings\User\Desktop\Annoying Folder."
sumber
rd
.CMD.exe
dalam mode administrator juga jika tidak berfungsi di command prompt yang tidak ditinggikanSolusi: Saat Anda memanggil RemoveDirectory, pastikan Anda mengawali jalur dengan string "
\\?\
".Penjelasan: Ini ada hubungannya dengan titik. Menurut MSDN, ada kasus tertentu di mana Anda mungkin tidak dapat menghapus file atau folder pada volume NTFS, khususnya ketika nama file tidak valid di ruang nama Win32 (itulah sebabnya Anda tidak dapat membuka file menggunakan metode normal di Windows Explorer).
(Sumber: http://support.microsoft.com/?kbid=320081 )
sumber
rd "\\?\C:\Users\ahmed\Desktop\buggy."
rd
di pwsh adalah aliasremove-item
yang tidak mendukung `\\? \`.{IncrementalNumber}.
), dan saya sangat bingung tentang mengapa skrip pemrosesan data saya gagal. Ini sekarang masuk akal, tetapi sepertinya perilakunya sangat tidak terduga sehingga dapat memiliki konsekuensi keamanan karena aplikasi yang salah menangani nama file yang diakhiri dengan spasi atau titik.Saya telah memposting ini di SU dan saya memutuskan untuk mempostingnya di sini juga. Ini cara termudah dan tercepat dan termudah untuk mencapai ini. Saya sekarang menertawakan betapa sederhananya itu.
Saya sendiri telah menginstal WinRaR jadi saya memutuskan untuk mendemonstrasikan solusi di dalamnya.
Solusi ini juga dapat dilakukan dengan menggunakan 7zip.
Satu hal lagi yang harus saya sebutkan adalah, karena tampaknya masalahnya disebabkan oleh penggunaan windows explorer dan browser file lainnya (seperti browser file winrar itu sendiri, penjelajah ftp, dll.) Akan memperlakukan file ini seperti biasa.
Anda dapat mencoba menggunakan browser file apa pun dan cukup menghapus file-file itu dan tidak repot-repot mengarsipkannya! Bersulang!
sumber
Jika Anda melihat namanya adalah "a.", Tetapi nama sebenarnya adalah "a .."
Coba ini:
rd /q /s "C:\a..\"
Dan Anda dapat mencoba menjelajahi folder dengan kode ini:
for /f "tokens=3 delims=<>" %%a in ('dir /ad /x "C:\*" ^| findstr " a\.\.$"') do ( for /f "tokens=1" %%b in ("%%a") do start "" "%%~fb" )
sumber
Jika Anda telah menginstal git (Anda bisa mendapatkannya dari sini ) maka itu sesederhana:
rm -rf Foldername./
sumber
rm: cannot remove ‘.bin’: Directory not empty
-rf
bagian tersebut harus menangani konten folder.Saya menggunakan " WinRar ", RAR sederhana, prosesor ZIP. Anda dapat menggunakan editor nama file apa pun. Buka saja direktori tempat file Anda berada di WinRar dan pilih rename setelah mengklik kanan file / folder yang ingin Anda ganti namanya dan isi dengan nama baru.
sumber
Coba gunakan program unlocker untuk menghapus file dan folder yang tidak dapat Anda hapus secara normal.
sumber
Gunakan perintah bash rm dari Ubuntu pada Windows 10
sumber
rm: cannot remove ‘.bin’: Directory not empty
jika Anda ingin menyimpan file, ada opsi di bash juga.
Anda akan memerlukan paket Subsistem Windows untuk Linux (saya telah menginstal Ubuntu)
untuk menyimpan file. buka prompt perintah dan cd ke tempat file atau folder berada.
sekarang ketik "
bash
"ini akan membuka bash di prompt. sekarang masuk
mv '[folder or file you want to move]' '[new name (can include path)]'
(masih ada lagi ke mv jadi jika Anda ingin membaca semua opsinya, gunakan 'man mv' ini akan membuka halaman manualnya (lalu gunakan q untuk kembali ke bash))perintah mv adalah kependekan dari move, tetapi itu memiliki fungsi sekunder untuk mengganti nama sesuatu.
juga di bash gunakan 'tanda kutip tunggal' dan bukan "tanda kutip ganda" yang normal, karena bash mengharapkan 'tanda kutip tunggal'.
inilah sebuah contoh. asumsikan folder Anda bernama "
data 1.
" terletak dic:\users
(jadi path lengkap ke folder kesalahan adalahc:\users\data 1.
1. buka command prompt menggunakan metode apapun
2. masukkan
cd c:\users
3. sekarang ketik
bash
bash beban ini di folder tempat Anda sebelumnya berada4. terakhir ketik
mv 'data 1.' 'data 1'
5. folder tersebut sekarang dapat diakses dan Anda dapat memilih untuk menghapusnya.
sumber