Wie gebe ich den Verzeichnispfad in der .bat-Datei an?

Wie gebe ich den Verzeichnispfad in der .bat-Datei an?

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

verwandte Informationen