2016-05-13 13 views
0

Ich verwende Windows OS, und ich habe Video als Serienunterricht heruntergeladen. Ich möchte diese Videos nach Datum bestellen und Präfix-Nummer für das erste Video als 1 als 2, 3 ..... Ich fand Antwort bei hier How to rename and add incrementing number suffix on multiple files in Batch Script? kann es Nummer zu Dateinamen hinzufügen, kann aber nur nach Namen nicht Datum bestellen. Danke und Entschuldigung für mein Englisch.Wie fügt man in Batch Script inkrementelle Reihenfolge nach Datum für mehrere Dateien hinzu?

+1

Mit 'dir/O' können Sie Dateien nach Datum sortiert auflisten (siehe' dir /? 'Für Optionen); Sie könnten ihre Ausgabe mit einer 'for/F'-Schleife parsen, eine Zählervariable installieren und sie den Dateinamen mit' ren' voranstellen ... – aschipfl

Antwort

0

Hier ist eine einfache Implementierung, was in seinem Kommentar vorgeschlagen aschipfl:

@echo off 
setlocal enableDelayedExpansion 
set /a n=0 
for /f "delims=" %%F in ('dir /b /od') do (
    set /a n+=1 
    ren "%%F" "!n!_%%F" 
) 

Aber es gibt zwei mögliche Probleme:

1) Die FOR/F-Befehl einen Standard EOL-Zeichen von ; hat - Wenn ein Dateiname mit ; beginnen würde, würde es übersprungen werden. Die einfache Lösung besteht darin, EOL auf ein Zeichen zu setzen, das nicht in einem Dateinamen erscheinen kann - : ist eine gute Wahl.

2) Die Umbenennung schlägt fehl, wenn ein Dateiname das Zeichen ! enthält, weil die verzögerte Erweiterung aktiviert ist, und %%F vor der verzögerten Erweiterung erweitert wird. Die Lösung ist der Dateinamen auf eine Variable zu speichern, und dann Umschalten verzögert Expansion EIN und AUS in der Schleife

@echo off 
setlocal disableDelayedExpansion 
set /a n=0 
for /f "eol=: delims=" %%F in ('dir /b /od') do (
    set "file=%%F" 
    set /a n+=1 
    setlocal enableDelayedExpansion 
    ren "!file!" "!n!_!file!" 
    endlocal 
) 

Es ist eine einfachere Option - verwenden FINDSTR /N den DIR /B /OD Ausgang mit der Zeilennummer vorangestellt, und dann Verwenden Sie FOR /F, um die Nummer und den Dateinamen auszuwerten. Jetzt ist keine Zählervariable oder verzögerte Erweiterung erforderlich.

@echo off 
for /f "delims=: tokens=1*" %%A in ('dir /b /od ^| findstr /n "^"') do ren "%%B" "%%A_%%B" 

Sie brauchen nicht einmal eine Batch-Datei. Sie könnten Folgendes direkt von der Befehlszeile aus verwenden:

for /f "delims=: tokens=1*" %A in ('dir /b /od ^| findstr /n "^"') do ren "%B" "%A_%B"