Bagaimana saya bisa menghapus tautan simbolis?

322

Saya membuat symlink menggunakan mklink. Sekarang saya perlu mengubahnya tetapi saya tidak tahu cara menghapusnya sehingga saya bisa membuatnya kembali dengan benar.

Ben V
sumber

Jawaban:

557

Berhati-hatilah.

Jika Anda memiliki tautan simbolik yang merupakan direktori (dibuat dengan mklink /d) maka menggunakan delakan menghapus semua file di direktori target (direktori yang ditunjuk tautannya), bukan hanya tautannya.

SOLUSI: rmdir di sisi lain hanya akan menghapus tautan direktori, bukan ke arah tautan itu.

eddyq
sumber
103
Baru saja secara tidak sengaja melakukan ini (menghapus isi lengkap folder target), ini tip yang penting.
Simon Gillbee
4
Jawaban ini tidak sepenuhnya akurat. Delmenghapus file, bukan folder. Karenanya, Anda tidak akan menggunakan deluntuk menghapus tautan.
AMissico
12
Tapi jangan gunakan rmdirdi PowerShell. Bungkus cmddulu. Lihat jawaban saya di bawah ...
northben
4
Bagaimana jika saya menghapusnya melalui windows explorer ????
Cheung
8
Di sana Microsoft Karyawan pergi lagi, hanya mencoba untuk menghancurkan hidup saya, karier, dan sistem operasi Windows.
ThorSummoner
62

Untuk menghapus tautan simbolik direktori yang dibuat dengan tautan mklink /daman, cukup hapus tautan simbolik di explorer.

ddelrio1986
sumber
27
+1 untuk memberi tahu orang bahwa menyimpan tautan simbolis melalui Windows Explorer disimpan.
AMissico
3
Itu benar. Saya selalu melakukannya. Coba saja lagi sekarang.
ddelrio1986
2
Ini hanya bekerja untuk saya juga. saya menghapus tautan, bukan folder sumber yang ditautkan. mungkin itu hasil tangkapannya.
R Hughes
3
Aman untuk menghapusnya dengan Klik kanan -> Hapus. Ini TIDAK menghapus folder yang ditautkan.
Hexo
mklink / d Tidak bekerja untuk saya di Windows 7 .. Saya mungkin telah menggunakan versi lama
abelito
47

Untuk symlink ke file, gunakan del. Untuk symlink ke direktori yang dibuat dengan mklink /d, gunakan rmdir.

George V. Reilly
sumber
5
Peringatan: "del" akan menghapus file dan bukan hanya tautannya.
WoodenKitty
6
Peringatan dari @Tristan tidak benar, jawaban ini akurat. Diuji pada windows 7.
jiggunjer
1
Di Windows 7 SP1 (64-bit), tautan simbolis yang menunjuk ke salah satu file (misalnya dibuat menggunakan MKLINK) atau ke direktori (MKLINK / D) dapat dihapus di Windows Explorer, menggunakan opsi 'hapus' Windows GUI biasa. , tanpa menghapus target. Bahkan JUNCTION (mis. Dibuat menggunakan perintah MKLINK / J), jika dihapus di Explorer, tidak akan menghapus direktori target atau isinya. Jika tidak kosong, direktori target bahkan tidak bisa dihapus menggunakan perintah DEL junction di command prompt. Diuji hari ini.
Ed999
Pada Windows Server 2012, ini menghapus isi direktori yang menunjuk ke symlink saya ...
C Bauer
Anda harus memperingatkan orang untuk tidak rmdirmenautkan dari Powershell!
NH.
28

Di Powershell, jangan gunakan rmdir! Gunakan cmd /c rmdir .\Targetsebagai gantinya. Saya mengujinya sendiri dan mengonfirmasinya di sini: http://kristofmattei.be/2012/12/15/powershell-remove-item-and-symbolic-links/

northben
sumber
Blog itu membingungkan arti "Target", yang merupakan direktori aktual yang ditunjukkan oleh tautan, dan yang umumnya orang-orang ingin hindari menghapus ketika menghapus tautan.
kreemoweet
2
rmdiradalah perintah internal cmd.exe , sehingga jelas untuk memanggilnya dari shell lain yang Anda perlukan cmd /catau cmd /k. rmdirdi PowerShell hanya sebuah alias untukRemove-Item
phuclv
24

Ada solusi lain yang saya coba dan aman untuk digunakan. cukup tambahkan ke folder asli _ (contoh: foo menjadi foo_) kemudian cukup hapus tautan simbolik Anda, lalu hapus _ dari folder Anda yang sebenarnya.

vcorp
sumber
2
ya, ini adalah solusi teraman 100% setelah Anda tahu bahwa PowerShell tidak memberikan ** t tentang rmdir
test30
Ini adalah tindakan pencegahan yang cerdas. +1
Hanna
Peringatan: Saya rasa ini MUNGKIN tidak berfungsi pada Win10 karena memperbaiki pintasan saat pengubahan nama. (Setidaknya Shortcuts klasik) Namun tidak diuji.
Hexo
Saya melakukan ini untuk berjaga-jaga. Setelah saya mengganti nama folder target, tautan simbolink gagal ketika saya mencoba mengaksesnya, sehingga saya bisa menghapusnya tanpa khawatir.
Andrew
21

mklink tidak dapat digunakan untuk menghapus tautan simbolik. Untuk menghapus tautan simbolik, cukup hapus tautan seolah-olah Anda sedang menghapus file biasa. Misalnya, untuk menghapus tautan simbol foo yang dibuat di atas, masukkan perintah berikut:

Jika tautan tersebut merupakan tautan keras ke direktori:

C:\test>rmdir foo

atau yang lain, JIKA tautan menunjuk ke suatu file (tidak seperti dir)

C:\test>del foo

Sumber: http://www.mydigitallife.info/2007/05/22/create-symbolic-links-hard-links-and-directory-junctions-in-vista-with-mklink/

Daisetsu
sumber
2
Pastikan Anda tidak menghapusnya dengan del /Satau Explorer.
Hello71
1
Lihat jawaban eddyq di bawah ini karena menggunakan del untuk tautan yang dibuat ke direktori tidak akan berfungsi dan sebaliknya akan mencoba untuk menghapus konten folder.
jpierson
2
Hardlink ke direktori tidak ada. Saya pikir Anda bermaksud mengatakan symlink.
Brilliand
0

Dalam kasus saya (Windows 10), setelah membuat tautan simbolik menggunakan

MKLINK /D "C:\Users\username\Dropbox\MyProject" "C:\SourceProject"

dan menghapus via delete menggunakan file explorer atau keyboard delete key juga menghapus direktori asli .

Yang harus Anda lakukan adalah menghapus tautan melalui command prompt.

C:\Users\username\Dropbox>rd /s MyProject

Untuk rincian tentang perintah rd: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/rd

tetedp
sumber
0

Cara paling sederhana adalah memindahkan folder (tempat tautan simbolik menunjuk) ke tempat lain (ke folder induk) dan kemudian menghapus tautan simbolik. Tidak ada file yang akan dirusak!

netgoblin
sumber
0

Saya telah menginstal Ekstensi Tautan Shell ini . Dengan ini, Anda memiliki 2 metode.

METODE 1

Buat menggunakan menu konteks seperti yang ditunjukkan dan hapus melalui file explorer.

Uji dengan folder seperti yang C:\Windows\Logsditunjukkan atau mirip. Saya hanya membuat direktori dari semua kemungkinan lokasi file temp untuk dihapus dan saya ingin folder pusat di mana saya bisa memonitor ukurannya melalui tautan simbolik.

Harap dicatat: Layar menjadi putih hanyalah UAC .

hapus dari metode explorer

METODE 2

Cara teraman tanpa dokumen di sini AFAIK .

Pada tautan simbolis yang dibuat ( dalam langkah-langkah yang ditunjukkan di atas ), klik kanan tautannya kali ini dan klik properti kemudian buka Link Propertiestab.

Catatan: Ekstensi shell ini menambahkan tab ini.

Sebelum saya melanjutkan, banyak info lebih lanjut dapat ditemukan di sini , juga, di beranda adalah versi x64 dan 32bit .

Jadi, untuk melanjutkan, di sini Anda dapat menambahkan apa pun ke bidang target selama itu berbeda dengan target asli.


  1. Inilah yang sebelumnya dengan target sebagai C:\Windows\Logs target sebelumnya

  2. Berikut ini setelah target C:\Windows\Logs_, perhatikan tambahan _di akhir.

    target setelah

  3. tekan OK

  4. Anda dapat memeriksanya lagi dengan menelusuri 1-3 langkah yang sama di atas untuk memastikannya macet, kali ini Anda akan mendapatkan pesan kesalahan saat mengklik Link Propertiestab tersebut sehingga tautannya sekarang terputus.

  5. Sekarang aman (r) untuk menghapus tautan simbolik daripada metode 1 IMHO.


Tapi! Kedua metode bekerja di sini sehingga sepenuhnya terserah pilihan pengguna. Saya suka metode properti yang saya temukan dengan senang hati, jadi Anda 100% yakin tautannya rusak dengan menggunakan langkah 4 di atas.

Berikut adalah gif saya membuat tautan simbolik dengan tombol kanan mouse menyeret folder ke yang lain dan memilih opsi untuk membuat tautan simbolik di sub-menu.

Untuk menghapus, cukup ikuti 1-5 langkah di atas metode 2 atau ikuti metode 1.

Cara membuat dan menghapus tautan simbolik menggunakan metode properti

Harap dicatat: Layar menjadi putih hanyalah UAC .

gif tentang cara membuat dan menghapus tautan sinkronisasi menggunakan metode properti

Stephen Sherry
sumber