2009-06-22 13 views
12

Also, ich habe eine Reihe von Dateien ohne Erweiterung. Ich möchte ein Windows-Batch-Skript schreiben, das wird:Dateien ohne Erweiterung suchen und umbenennen?

  1. Dateien finden ohne Erweiterung (in einem bestimmten Ordner)
  2. .bla an das Ende des Dateinamens

Ich bin so ein Windows Batch Script noob ich weiß nicht einmal wo ich anfangen soll. Vorschläge?

Antwort

25

Für Windows-Batch-Dateien, wird dies ohne Erweiterung der .bla Erweiterung nur Dateien umbenennen:

rename *. *.bla 

Hinweis Das erste Argument ist ein Stern und ein Punkt: *.

Das zweite Argument ist: * .bla

Der Startpunkt Kombination stellt Dateien ohne Erweiterungen in diesem Zusammenhang (. *).

Vorher:

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 würde alle .bla Dateien in keine Erweiterungsdateien umbenennen.

EDIT:

Für rekursiv Dateien ohne Erweiterung über Verzeichnisse (unterstützt keine Leerzeichen in Pfaden) Umbenennen:

@echo off 
FOR /F %%i in ('dir /b/s/A-d') DO (
    if "%%~xi" == "" rename "%%~fi" "%%~ni.bla" 
) 

EDIT2:

Für rekursiv Umbenennen von Dateien ohne Erweiterung über Unterverzeichnisse (unterstützt Leerzeichen im Pfad):

@echo off 
for /f "tokens=* delims= " %%i in ('dir /b/s/A-d') DO (
    if "%%~xi" == "" rename "%%~fi" "%%~ni.bla" 
) 
+0

Ich dachte darüber nach, aber es gibt nicht einmal einen Punkt am Ende des Namens ... wird das noch funktionieren? – Alan

+0

Wie würde ich auch Unterordner hinzufügen? – Alan

+0

@Alan - Ja, es wird funktionieren, und wie viele Unterordner reden wir? – JFV

5

, dies zu tun in einem Unterverzeichnis verwenden, um dies:

for /f %a in ('dir /b /ad /s') do rename %a\*. *.bla 

, wenn Sie dies in einer Batch-Datei verwenden, müssen Sie das '%'

for /f %%a in ('dir /b /ad /s') do rename %%a\*. *.bla 

bearbeiten verdoppeln:

und wenn Sie Leerzeichen in Ihren Verzeichnisnamen haben, können Sie dies (Batch-Version) versuchen:

for /f "tokens=* delims= " %%a in ('dir /b /ad /s') do rename "%%a\*." "*.bla" 
+0

schön! (15 Char Limit) –

+0

Kleineres Problem hier - funktioniert nicht für Verzeichnisse mit Leerzeichen ... sonst sieht gut aus – Alan

6

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 doppelten %):

@echo off 
for /f %%i in ('dir *. /b /s /a-d') do (
    rename "%%~fi" "%%~ni.bla" 
) 


Wenn Datei- oder Ordnernamen Leerzeichen enthalten, verwenden Sie dieses c ommand 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: hier ist 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" 
Verwandte Themen