Frage

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

  1. Finden von Dateien ohne Erweiterung (in einem bestimmten Ordner)
  2. 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?

War es hilfreich?

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"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top