Wie entferne ich symbolische Links in Windows (zwischen regulären Dateien, die in vielen Ordnern einen ähnlichen Namen haben)?

4858
Edward

Gibt es eine Möglichkeit, viele symbolische Links in vielen Ordnern, die viele andere Dateien enthalten, schnell zu entfernen? ZB ein Befehl in der Eingabeaufforderung (in der Lage sein, beispielsweise alle Slink zu löschen, die am Tag XX erstellt wurden)?

Entfernen Sie alle Objekte, die symbolisch verknüpft sind, alle anderen Objekte bleiben erhalten. Jetzt navigiere ich nur Ordner für Ordner und wähle sie manuell in Windows Explorer aus (ordne alle Elemente nach Größe und symbolischen Links der Größe 0KB an, und drücke Shift all -> del) und entferne langsam, vielleicht manchmal einen Fehler sl mit anderen 0KB-Dateien. Mein jüngerer Bruder zieht viele Dateien per Rechtsklick (Link Shell Extension Copyright (C) 1999 - 2008 von Hermann Schinagl ist bereits auf einem PC installiert, in Windows Explorer integriert) und er wählt Drop als symbolischen Link aus, alles wurde zu Müll.

7

2 Antworten auf die Frage

7
dansmith65

This is similar to JdeBP's answer, but it doesn't require any external software:

FOR /F "usebackq delims=" %a IN (`DIR /a:l /s /b "C:\dir\with\symlinks"`) DO RMDIR "%a" 

When used in a script, substitute %a with %%a.

Ich habe probiert, FOR / F "usebackq delims =" %% a IN (`DIR / a: l / s / b" D: \ "`) DO RMDIR "%% a". Ich habe %% a zu diesem Zeitpunkt nicht erwartet. Syaiful Nizam Yahya vor 7 Jahren 0
Wenn Sie die Befehlszeile direkt eingeben, ersetzen Sie "%% a" durch "% a". "%% a" wird in einer Batchdatei verwendet, wie in der Ausgabe von "for /?" angegeben. Ich werde meine Antwort aktualisieren, um diese Informationen aufzunehmen. dansmith65 vor 7 Jahren 0
4
JdeBP

Using the SFUA utility toolkit:

Finding symbolic links can be done the same ways as finding hard links: using the find command that is in Microsoft's SFUA utility toolkit, that runs in the Subsystem for Unix-based Applications:

find . -type l|xargs rm --

Using JP Software's TCC/LE:

This is a simple exercise in the use of attribute switches and the ordinary del command:

del /a:l *
You can, of course, use the /s, /p, and other options to the del command. And you can preview what would be deleted either by using del's /n option or simply by substituting dir for del.

Caveat

Both of these actually find reparse points. Symbolic links are but one form of reparse points. If you have others, such as junctions, you'll have to be careful about what parts of your directory tree you apply these commands to. Using date ranges to only delete files with recent creation dates (/[dc…]) might be profitable as well.

The TCC/LE version doesn't seem to work with junctions, because /s descends *into* junctions, rather than *considering them to delete*. /nj will stop that, but doesn't seem to solve the problem. The following seems to work, even though del claims to have deleted nothing: del /a:l /s /e /l * As a useful helper, this will list all such files: dir /a:l /s /nj /k /m so you can see if it worked. -Robin rlpowell vor 11 Jahren 0
Dadurch konnten die Reparse-Punkte in meinem Verzeichnisbaum nicht gelöscht werden, aber ich konnte sie finden (ersetzend "dir" für "del") zum Löschen über den Windows-Dateiexplorer. Zarepheth vor 7 Jahren 0