So benennen Sie mehrere Dateien um, indem Sie den letzten Teil des Namens entfernen

So benennen Sie mehrere Dateien um, indem Sie den letzten Teil des Namens entfernen

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.jpg
Wie 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 part4Variable 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

NOTIZ: Bildbeschreibung hier eingeben


Weitere Ressourcen

Antwort2

Der nächste Codeausschnitt zeigt zwei mögliche Lösungen:

Skript(Beachten Sie, dass der Betriebsbefehl lediglich zu Debugging- und Demonstrationszwecken RENAMEangezeigt 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

verwandte Informationen