dctibi
Goto Top

Korrektur aller falschen Dateinamen auf einem Laufwerk

http://support.microsoft.com/kb/320081/de zeigt, wie man z.B. Dateien mit einem ungültigen Namen im Win32-Namespace noch erreichen kann.

Hätte nun gerne eine Batch, die diese Leertasten vorne und hinten bei einem Dateinamen vernichtet oder durch ein Zeichen wie z.B. "_" ersetzt.

ich finde nur keine Lösung für eine for-schleife solche Dateien zu finden - das umbenennen etc. steht ja in der kb...

Hat jemand eine Idee?

Content-ID: 179483

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

Ausgedruckt am: 25.11.2024 um 12:11 Uhr

Biber
Lösung Biber 24.01.2012, aktualisiert am 13.12.2013 um 19:28:29 Uhr
Goto Top
Moin dctibi,

was spricht denn dagegen, die Dateien mit der gleichen Syntax zu suchen mit der sie auch umbenennen würdest?

Also theoretisch z.B
dir "\\?\c:\* " /b /s

...um alle Dateien mit einem Leerzeichen am Ende des (Namens+Extension) zu finden?

Grüße
Biber
dctibi
dctibi 25.01.2012 um 21:21:37 Uhr
Goto Top
Klaro - Danke!

Tja, wenn man schon fragt, wie finde ich mit einer for-Schleife falsche Dateien... da hatte ich mich gedanklich verrannt. Die richtige Frage, die ich mir selbst stellen sollte: Wie findet man falsche Dateien (ohne dem Zwang nach For-Schleife). So, damit hier dann auch der thread gelöst ist, hier noch meine Idee:
@echo off & setlocal
set "Basis=c:\seltsam"  
echo Benennen nun ungueltige Dateien in "%Basis%" um - Endung ist dann .geloest  
for /f "usebackq delims=" %%i in (`"dir "\\?\%Basis%\* " /b /s 2^>nul"`) do (  
	echo Datei %%i ist unglueltig... setze neuen Dateinamen...
	ren "%%i" "%%~ni.geloest" 2^>nul  
	if errorlevel == 1 (
                echo Datei "%%~ni.geloest" bereits vorhanden. Wird somit "%%~ni2.geloest"  
  	       ren "%%i" "%%~ni2.geloest" 2^>nul  
		)
	)
echo "Wenn Dateinamen nicht zu oft falsch vorkommen - dann sollte nun alles passen ;-)"  
Wenn es keine Gegenstimmen gibt, wird dieser thread auf gelöst gesetzt. ok?
Biber
Biber 25.01.2012, aktualisiert am 13.12.2013 um 19:28:36 Uhr
Goto Top
Moin dctibi,

Zitat von @dctibi:
Wenn es keine Gegenstimmen gibt, wird dieser thread auf gelöst gesetzt. ok?
Hey, ich wäre der Letzte, der seine Stimme erhebt, um das Auf-Erledigt-Setzen eines Beitrages zu verhindern oder auch nur zu verzögern... face-wink

In vorauseilendem Dank habe ich dir deinen Schnipsel auch in Code-Formatierung gesetzt.
(wenn du "editierend" noch mal auf deinen Kommentar gehst, dann siehst du, wie einfach das geht).

Grüße
Biber
dctibi
dctibi 13.12.2013 um 17:10:35 Uhr
Goto Top
Tja, hatte mich damals nur zu früh gefreut: Habe Probleme, wenn z.B. die Datei mit einem Ausrufezeichen beginnt... Zum Erstellen solch einer Testdatei:


echo > "\\?\C:\TEMP\!!!problem!!! "

Nur eine Kleinigkeit fehlt also zu meiner Batch noch - kann wer helfen?
dctibi
dctibi 17.12.2013 um 13:57:19 Uhr
Goto Top