
Ich muss mehrere Dateien umbenennen.
Beispiel: ERKS 400001_thumb.jpg ERKS 500124_thumb.jpg ERKS 100004_thumb.jpg
Ich möchte die obigen Dateien wie folgt umbenennen:
Beispiel: 00400001.jpg 00500124.jpg 00100004.jpg
Ich habe diesen Code verwendet, konnte aber nicht das gewünschte Ergebnis erzielen.
@ECHO ON
SETLOCAL ENABLEDELAYEDEXPANSION
SET SourceDir=F:\Square.....
FOR /F "TOKENS=1-3 DELIMS=. " %%F IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
SET "part1=%%~F"
SET "part2=%%~G"
SET "part3=%%~H"
REN "%SourceDir%\!part1! !part2!.!part3!" "00!part2!.!part3!"
)
GOTO EOF
Wenn ich den obigen Code ausführe, ist das Ergebnis Folgendes:
Beispiel: 00400001_thumb.jpg 00500124_thumb.jpg 00100004_thumb.jpgWie kann ich die Dateien umbenennen?
Antwort1
Sie sollten die folgende Syntax für das verwenden, was Sie in diesem speziellen Fall erklären. Sie müssen einen zusätzlichen Trennstrich hinzufügen_
Zeichen und füge außerdem ein weiteres Token hinzu, also 1-4
. Mit dem zusätzlichen Token und Trennzeichen habe ich die part4
Variable hinzugefügt, um Ihnen das erwartete Ergebnis zu liefern.
Da dies mit meiner Antwort für Sie auf zusammenzuhängen scheintdieser Beitrag, ich dachte, ich könnte auch dabei helfen.
Alle JPG-Dateien
@ECHO ON
SETLOCAL ENABLEDELAYEDEXPANSION
SET SourceDir=F:\Square.....
FOR /F "TOKENS=1-4 DELIMS=._ " %%F IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
SET "part1=%%~F"
SET "part2=%%~G"
SET "part3=%%~H"
SET "part4=%%~I"
REN "%SourceDir%\!part1! !part2!_!part3!.!part4!" "00!part2!.!part4!"
)
GOTO EOF
Wenn Sie einen Ordner mit JPG-Dateien haben, die das Wort „thumb“ enthalten, und andere ohne das Wort „thumb“, können Sie das folgende Skript verwenden, um nur diejenigen zu ändern, die das Wort „thumb“ enthalten, wie Sie es in Ihrer Frage beschreiben.
Nur Miniatur-JPG-Dateien mit Namen
@ECHO ON
SETLOCAL ENABLEDELAYEDEXPANSION
SET SourceDir=F:\Square.....
FOR /F "TOKENS=1-4 DELIMS=._ " %%F IN ('DIR /B /A-D "%SourceDir%\*thumb.jpg"') DO (
SET "part1=%%~F"
SET "part2=%%~G"
SET "part3=%%~H"
SET "part4=%%~I"
REN "%SourceDir%\!part1! !part2!_!part3!.!part4!" "00!part2!.!part4!"
ECHO "%SourceDir%\!part1! !part2!!part3!.!part4!" "00!part2!.!part4!"
)
GOTO EOF
Weitere Ressourcen
Antwort2
Der nächste Codeausschnitt zeigt zwei mögliche Lösungen:
!part2:_thumb=!
, sehenVariable bearbeiten/ersetzen- Ein anderer Ansatz erfordert nichtVerzögerte Erweiterungermöglicht
Skript(Beachten Sie, dass der Betriebsbefehl lediglich zu Debugging- und Demonstrationszwecken RENAME
angezeigt wird ):ECHO
@ECHO OFF >NUL
SETLOCAL EnableExtensions DisableDelayedExpansion
SET "SourceDir=D:\bat\SU\Files\1126981" change to meet your circumstances
echo if _thumb part is fixed
FOR /F "TOKENS=1-3 DELIMS=. " %%F IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
SET "part1=%%~F"
SET "part2=%%~G"
SET "part3=%%~H"
SETLOCAL EnableDelayedExpansion
echo REN "%SourceDir%\!part1! !part2!.!part3!" "00!part2:_thumb=!.!part3!"
ENDLOCAL
)
echo(
echo if _thumb part could vary, e.g. _thumb, _thumbnail, _thumbsketch
FOR /F "TOKENS=*" %%g IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
FOR /F "TOKENS=1-4 DELIMS=_. " %%F IN ("%%~g") DO (
echo REN "%SourceDir%\%%~g" "00%%~G.%%~I"
)
)
Ausgabe:
==> D:\bat\SU\1126981.bat
if _thumb part is fixed
REN "D:\bat\SU\Files\1126981\ERKS 100004_thumb.jpg" "00100004.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 400001_thumb.jpg" "00400001.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 500124_thumb.jpg" "00500124.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 900009_thumbnail!.jpg" "00900009nail!.jpg"
if _thumb part could vary, e.g. _thumb, _thumbnail, _thumbsketch
REN "D:\bat\SU\Files\1126981\ERKS 100004_thumb.jpg" "00100004.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 400001_thumb.jpg" "00400001.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 500124_thumb.jpg" "00500124.jpg"
REN "D:\bat\SU\Files\1126981\ERKS 900009_thumbnail!.jpg" "00900009.jpg"
==>
Antwort3
Es ist ein Stück Code, das ich jetzt schon eine Weile habe. Sie werden aufgefordert, das Suffix (jpg), dann den Zielstring (_thumbs) und schließlich den Ersetzungsstring einzugeben (leer lassen, um den String durch einen leeren String zu ersetzen).
@echo off
Setlocal enabledelayedexpansion
ECHO Enter the suffix target (e.g. txt, jpg):
Set /P Suffix=
ECHO Enter Target String:
Set /P Pattern=
ECHO Enter Replacement String (or leave blank):
Set /P Replace=
For %%# in ("*.%Suffix%") Do (
Set "File=%%~nx#"
Ren "%%#" "!File:%Pattern%=%Replace%!"
)
In Ihrem Fall: Führen Sie diese Batchdatei zum ersten Mal aus: Ziel „ERKS“, Ersetzung „00“;ohneAnführungszeichen. Der zweite Lauf: Ziel "_thumbs" durch "" ersetzt. Drücken Sie einfach die Eingabetaste, ohne etwas einzugeben, wenn der Ersatz leer sein soll (kein Zeichen).
Antwort4
Wenn du hast
00400001_thumb.jpg 00500124_thumb.jpg 00100004_thumb.jpg
der Rest ist ein Kinderspiel. Da Ihre Dateien die gleiche Zeichenlänge zu haben scheinen, führen Sie einfach einen
ren *.jpg ????????.jpg
und Sie erhalten:
00400001.jpg 00500124.jpg 00100004.jpg