nummer80
Goto Top

Punkt-Unterstrich-Dateien (Mac) per Batch unter Windows löschen

Hallo Zusammen,

eigentlich möchte ich aus diversen Unterordnern in Windows
die MAC-Überbleibsel Dateien (beginnend mit "._") herauslöschen.

Bsp.:
im Ordner xy liegen diese zwei Dateien und die Erste davon soll gelöscht werden:

._test.pdf
test.pdf

Die relevante Zeile funktioniert aber leider nur gegenteilig (löscht mir das "korrekte" File):
For /f "Delims=" %%A in ('Dir /S/B/A-D "*.pdf"') Do Del "%%A"

Die ersten Versuche mit "._*.pdf" funktionierten ebensowenig.

Was komisch dabei ist:
Das "*.pdf" müßte doch eigentlich alle PDF Dateien in dem Ordner löschen,
es bleiben aber die mit dem Präfix "._" bestehen.

Kann es daran liegen, das dies eigentlich keine "richtigen" Dateien sind ("schwaches" Icon)?
Wie bekomme ich die dann gelöscht (per batch)?
"Von Hand" funktionierts doch auch...

Vielen Dank schonmal für Eure Mühe,
nummer80

Content-ID: 136752

Url: https://administrator.de/contentid/136752

Ausgedruckt am: 05.11.2024 um 16:11 Uhr

Biber
Biber 24.02.2010 um 14:01:01 Uhr
Goto Top
Moin nummer80,

willkommen im Forum.

Diese Ex-MAC-Dateien mit der Namenskonvention "._*.*" sind als Hidden/System gekennzeichnet, deshalb gehen dir diese Dateien bei den normalen Wildcard-Recherchen mit "DIR *.*" oder "FOR ...in (*.*)" durch die Lappen.

Bitte überprüf mal am CMD-Prompt anhand einer Datei (">" nicht mit eingeben; ist mein Prompt)
>attrib ".*.txt"
A  SH      D:\temp\._test.txt
>dir /b ".*.txt"
Datei nicht gefunden
>dir /ah /b ".*.txt"
._test.txt

...anstatt meines Beispiel-Namens "._test.txt" (die ich mir angelegt habe) bitte einen bei dir existierenden Dateinamen nehmen.

Poste bitte dein Ergebnis des ATTRIB-Anzeige-Befehls.

Grüße
Biber
kingkong
kingkong 24.02.2010 um 14:02:08 Uhr
Goto Top
Ich weiß gerade nicht, ob das auch unter Windows XP so ist, aber unter Linux sind diese Dateien ja dann versteckt. Und ich meine mich zu erinnern, dass ich das selbe Verhalten auch unter XP gesehen habe. Windows 7 reagiert darauf aber definitiv nicht mehr.
nummer80
nummer80 24.02.2010 um 14:31:07 Uhr
Goto Top
Hallo Biber und KingKong

Danke! Ich bin unter XP unterwegs...

Bei der CMD-Eingabe erhalte ich ähnliches...
Wenn ich
attrib ".*.pdf"
eingebe, findet er mir die Datei nicht...
nur mit "*.pdf",
dann erhalte ich:
A H C:\test\._75_test.pdf

dir /b ".*.pdf"
ergibt:
Datei nicht gefunden

dir /b "*.pdf"
findet alle anderen, aber nicht die mit dem Präfix.

dir /ah /b ".*.pdf"
ergibt:
._75_test.pdf

hilft das irgendwie ?
kingkong
kingkong 24.02.2010 um 14:44:42 Uhr
Goto Top
Ich würde sagen, das bedeutet bei Dir tatsächlich, dass die Datei "hidden" ist. Wenn Du das Attribut also nicht explizit mitgibst wird er die Datei nicht finden...
Biber
Biber 24.02.2010 um 15:05:08 Uhr
Goto Top
Moin nummer80,

hilft das irgendwie ?
ja, uns hilft das irgendwie..
Dir anscheinend noch nicht... aber ich wollte dich schon selbst auf die lösung ("...zum Greifen nah...") kommen lassen.

Noch mal ein Versuch:
Setzt doch mal den DIR-Schalter "/ah" in dein ganz oben gepostetes "FOR /F ...%a in ('DIR ...')" -Statement ein...


Grüße
Biber
nummer80
nummer80 24.02.2010 um 15:20:00 Uhr
Goto Top
Ne, hast Recht... ich kam nicht gleich auf den Trichter.
Mir ist klar (hoffe ich ;o), das ich die Argumente mit dem "H" (für die versteckten Dateien) ergänzen muss...
Nur wie genau ? Ich bin da (noch) nicht so lang drin.

Habe es jetzt mal so ausprobiert:
For /f "Delims=" %%A in ('Dir /S/B/AH "._*.pdf"') Do Del "%%A"
das klappt aber leider nicht ("Datei nicht gefunden")

Wo hänge ich denn fest ?
Biber
Biber 24.02.2010 um 16:25:13 Uhr
Goto Top
Moin nummer80,

das kann nur noch ein Tippfehler sein oder eine Suche im falschen Verzeichnis.

Gib doch mal noch den Start-Pfad der Suche mit an im DIR-Befehl und teste das Genaze am CMD-Prompt
Beispiel:
For /f "Delims=" %A in ('Dir /Ah /b /s "c:\temp\._*.pdf"') Do @ECHO Del "%%A"  

Grüße
Biber
nummer80
nummer80 24.02.2010, aktualisiert am 18.10.2012 um 18:41:15 Uhr
Goto Top
Hallo nochmal,

ich habe zwischenzeitlich selbst auch weiter recherchiert und habe das hier gefunden:
Mit Batch-Datei versteckte Dateien löschen_comments

Daraufhin habe meine Zeile(n) mal so entsprechend angepasst:

for /f "delims=" %%A in ('Dir /B /S /A-D "._*.pdf"') do attrib -H "%%A"
for /f "delims=" %%A in ('Dir /B /S /A-D "._*.pdf"') do del "%%A"

Und tatsächlich, es funktioniert so...

Ich würde aber gerne verstehen warum!?
Ist es so, das die erste Zeile die "hidden Datei" zu einer "Normalen" macht
und dann erst (mit der zweiten Zeile) gelöscht werden kann ??
(und vorher nicht...)
Danke.

Viele Grüße,
nummer80
nummer80
nummer80 24.02.2010, aktualisiert am 18.10.2012 um 18:41:15 Uhr
Goto Top
Hallo Biber,

Deinen Vorschlag habe ich nun auch nochmal probiert, es funktioniert aber leider nicht.
Habe vorher auch nochmal einen anderen Thread gefunden:
Temporäre Office 2007 Dateien rekursiv löschen_comments
Hier gibt es aber leider irgendwie kein (End)ergenbis. Weißt Du noch wie dies ausging?
(Klingt ähnlich meinem Problem)

Viele Grüße,
nummer80
Biber
Biber 24.02.2010 um 16:43:31 Uhr
Goto Top
moin nummer80,

wie auch bastla in dem von dir angegebenen Beitrag anmerkte: Überrascht mich, dass es bei dir nicht wie angegeben geht. bei mir geht es in einem Schritt (XP Prof SP3).

Egal - da du es ja nur einmal in diesem Leben brauchst, nimm die bei dir funktionierende Lösung.

bestenfalls verkürzt als eine FOR-Anweisung:

for /f "delims=" %A in ('Dir /B /S /A-D "._*.pdf"') do attrib -H "%A" &  del "%A"  
die du as is vom CMD-Prompt abschicken kannst.

Grüße
Biber
nummer80
nummer80 24.02.2010 um 17:05:09 Uhr
Goto Top
ok, danke !
Ja ist komisch.. habe auch SP3 und XP Prof
Habe die Verkürzung nun in mein batch eingebaut (mit "%%A" anstatt "%A").
Funktioniert tadellos !

Viele Grüße,
nummer80