Ich habe eine .bat-Datei neben dem Ordner (Result).
Der Ordner enthält .jpg-Dateien mit unterschiedlichen Namen.
Ich versuche, eine .bat-Datei zu schreiben, die alle diese Dateien in diesem Ordner umbenennt.
Es funktioniert, aber nicht vollständig. Hier ist das Problem:
Es funktioniert nur in dem Verzeichnis, in dem sich die Dateien befinden.
(Damit dies funktioniert, benötige ich eine .bat-Datei und einen Ordner mit Dateien daneben.)
setlocal enabledelayedexpansion
set "count=1000"
set a="Result\*.jpg"
for /f "usebackq delims=*" %%f in (`dir /b /o:-d /tc %a%`) do (ren "%%f" file-!count:~1!.jpg
set /a count+=1
)
pause
Antwort1
Hier ist die Lösung.
Sie können einfach zum Ordner gehen, indem Sie den Pfad eingebencd / d Result
setlocal enabledelayedexpansion
cd /d Result
set "count=1000"
set a="*.jpg"
for /f "usebackq delims=*" %%f in (`dir /b /o:-d /tc %a%`) do (ren "%%f" file-!count:~1!.jpg
set /a count+=1
)
pause
SetLocal EnableDelayedExpansionErweiterung von Variablen durch Vorzeichen (!)
cd / d Ergebnisgehe zum Ergebnisordner
setze "Anzahl = 1000"Variable, in der ich die Anzahl der Nullen markiert habedatei-001.jpg
setze a = "*.jpg"die Variable gibt an, nach welchen Dateien wir suchen.
( dir /b /o:-d /tc %a%
)
dir- Zeigt eine Liste von Dateien und Unterverzeichnissen an. Als nächstes sortieren wir.
/B- Nur Dateinamen anzeigen.
/o:-d- Sortiert die Liste der angezeigten Dateien in umgekehrter Reihenfolge (von der neuesten zur ältesten).
/tc- Sortieren nach Dateierstellungszeit.
%A%- Rufen Sie die Variable auf.
verwendenLegt die Möglichkeit fest, Anführungszeichen für Dateinamen zu verwenden.Gefällt mir> ".
Gibt die Ausführung einer Zeichenfolge in Anführungszeichen als Befehl anGefällt mir> `,
und Zeichenfolgen in einfachen Anführungszeichen sind wie Befehle in einer ZeichenfolgeGefällt mir> '.
delims = xxxGibt einen Satz Trennzeichen an. Überschreibt den standardmäßigen Satz aus Leerzeichen und Tabulatoren als Trennzeichen.
Antwort2
Ihre Frage ist mir nicht ganz klar (mein Englisch ist schwach und dürftig), ich verstehe nicht, was sie sein soll:
Es funktioniert nur in dem Verzeichnis, in dem sich die Dateien befinden.
(Damit dies funktioniert, benötige ich eine .bat-Datei und einen Ordner mit Dateien daneben.)
- Ich nehme an, Sie möchten rekursiv umbenennen. Hier ist eine Bearbeitung dafür.
@echo off
set "_cnt=1000" && cd /d "%~dp0Result"
for /f tokens^=* %%I in ('dir /o:-d /tc /b /s *.jpg
')do set /a "_cnt+=1" && cmd /v /c "ren "%%~fI" file-!_cnt:~-3!.jpg"
%__AppDir__%timeout.exe /t -1 & goto :EOF
1.Geben Sie den Ordner ein, in dem sich die Fledermaus befindet:
cd /d "%~dp0Result"
2.Listen Sie Ihre Dateien rekursiv aufdir ... /b /s
for /f tokens^=* %%I in ('dir /o:-d /tc /b /s *.jpg
3.Erhöhen Sie Ihren Buchhalter
set /a "_cnt+=1"
4.Benennen Sie Ihre Datei in einer Schleife mithilfe Ihres Zählers um
cmd/v/c "ren "%%~fI" file-!_cnt:~-3!.jpg"
Obs.Wenn ich nicht das Richtige für Sie finde, lassen Sie es mich bitte wissen …
- Eine Alternative basierend auf Ihrer Antwort
@echo off
setlocal enabledelayedexpansion
set "_cnt=100" && cd /d "%~dp0"
for /f tokens^=* %%I in ('dir/b/o:-d/tc/b/s "Result\*.jpg"
')do rename "%%~fI" file-!_cnt:~-3!.jpg & set /a "_cnt+=1"
%__AppDir__%timeout.exe /t -1 & endlocal & goto :EOF
Weiterführende Literatur:
[√]cmd
[√]For-Schleife
[√]CMD/Bat-Operator /dostips.com
[√]Bedingte Ausführung || && ...
[√]Was bedeutet %~dp0 und wie funktioniert es?
[√]Wie analysiert der Windows-Eingabeaufforderungsinterpreter cmd.exe Skripte?
[√]Anleitung: Escape-Zeichen, Trennzeichen und Anführungszeichen in der Windows-Befehlszeile