Suchen und Umbenennen von Dateien ohne Erweiterung?
-
06-07-2019 - |
Frage
Also, ich habe eine Reihe von Dateien ohne Erweiterung bekommt. Ich möchte ein Windows-Batch-Skript schreiben, das wird:
- Finden von Dateien ohne Erweiterung (in einem bestimmten Ordner)
- Fügen Sie .bla bis zum Ende des Dateinamens
Ich bin so ein Windows-Batch-Skript Noob ich weiß nicht einmal, wo ich anfangen soll. Vorschläge?
Lösung
Für Windows-Batch-Dateien, werden diese nur Dateien umbenennen ohne Erweiterung der .bla Erweiterung:
rename *. *.bla
Beachten Sie das erste Argument ist ein Stern und ein Punkt:. *
Das zweite Argument ist: * .bla
Der Start Punkt (. *) Kombination stellt Dateien ohne Erweiterungen in diesem Zusammenhang.
Bevor:
06/21/2009 11:57 PM 6 test
06/21/2009 11:57 PM 7 test.exe
06/21/2009 11:57 PM 7 test2
Nach:
06/21/2009 11:57 PM 6 test.bla
06/21/2009 11:57 PM 7 test.exe
06/21/2009 11:57 PM 7 test2.bla
Zusätzlicher Hinweis: Das Gegenteil Kommandozeile alle .bla Dateien in keine Erweiterungsdateien umbenennen würde.
Bearbeiten :
Für rekursiv Dateien ohne Erweiterung über Unterverzeichnisse Umbenennung (unterstützt keine Leerzeichen in Pfaden):
@echo off
FOR /F %%i in ('dir /b/s/A-d') DO (
if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
)
EDIT2:
Für rekursiv Dateien ohne Erweiterung über Verzeichnisse (unterstützt Leerzeichen im Pfad) Umbenennen:
@echo off
for /f "tokens=* delims= " %%i in ('dir /b/s/A-d') DO (
if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
)
Andere Tipps
Hier ist ein anderer möglicher Befehl für Dateien ohne Erweiterungen rekursiv umbenennen (unter der Annahme, dass Dateipfade keine Leerzeichen enthalten ):
for /f %i in ('dir *. /b /s /a-d') do rename "%~fi" "%~ni.bla"
Batch-Version (mit verdoppelt %
):
@echo off
for /f %%i in ('dir *. /b /s /a-d') do (
rename "%%~fi" "%%~ni.bla"
)
Wenn Datei- oder Ordnernamen Leerzeichen enthalten , verwenden Sie diesen Befehl statt:
for /f "tokens=* delims= " %i in ('dir *. /b /s /a-d') do rename "%~fi" "%~ni.bla"
Batch-Version:
@echo off
for /f "tokens=* delims= " %%i in ('dir *. /b /s /a-d') do (
rename "%%~fi" "%%~ni.bla"
)
Edit: ist hier noch kürzer Einzeiler, die Leerzeichen in Pfaden unterstützt:
for /r %i in (*.) do ren "%~fi" "%~ni.bla"
Batch-Version:
@for /r %%i in (*.) do ren "%%~fi" "%%~ni.bla"
, dies zu tun in einem Unterverzeichnis verwendet diese:
for /f %a in ('dir /b /ad /s') do rename %a\*. *.bla
Wenn Sie dies in einer Batch-Datei verwenden, müssen Sie das ‚%‘ verdoppeln
for /f %%a in ('dir /b /ad /s') do rename %%a\*. *.bla
Bearbeiten
und wenn Sie Leerzeichen in Verzeichnisnamen haben, können Sie versuchen, diese (Batch-Version):
for /f "tokens=* delims= " %%a in ('dir /b /ad /s') do rename "%%a\*." "*.bla"