如何透過刪除多個檔案的最後一部分名稱來重新命名

如何透過刪除多個檔案的最後一部分名稱來重新命名

我有許多文件需要重命名。

例如:ERKS 400001_thumb.jpg
    ERKS 500124_thumb.jpg
    ERKS 100004_thumb.jpg

我想將上述文件重命名為:

例如:00400001.jpg
    00500124.jpg
    00100004.jpg

我使用了這段程式碼,但無法得到我需要的結果。

@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

如果我運行上面的程式碼,結果是這樣的:

例如:00400001_thumb.jpg
    00500124_thumb.jpg
    00100004_thumb.jpg
如何重命名檔案?

答案1

在這種特殊情況下,您將需要使用以下語法進行解釋。您必須新增額外的分隔符號下劃線_字符,並再添加一個令牌1-4。透過附加標記和分隔符,我新增了part4變數來為您提供預期的結果。

因為這似乎與我對你的回答有關這個帖子,我想我也會幫忙解決這個問題。

所有 JPG 文件

@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

如果您的資料夾中包含包含“thumb”一詞的 JPG 文件,而其他資料夾中不包含“thumb”一詞,則可以使用下面的腳本僅更改其中包含“thumb”一詞的資料夾。你的問題中描述。

僅限拇指命名的 JPG 文件

@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

筆記: 在此輸入影像描述


更多資源

答案2

下一個程式碼片段顯示了兩種可能的解決方案:

腳本RENAME(請注意,顯示操作命令僅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"
  )
)

輸出:

==> 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"

==>

答案3

這是我已經有一段時間的程式碼了。提示您輸入後綴 (jpg),然後輸入字串目標 (_thumbs),最後輸入替換字串(留空以便用空字串替換字串)。

@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%!"
)

在你的情況下:第一次執行此批次檔:目標「ERKS」取代「00」;沒有報價。第二次運行:目標“_thumbs”替換為“”。如果您希望替換為空白(無字元),只需按 ENTER 鍵而不輸入任何內容。

答案4

如果你有

00400001_thumb.jpg 00500124_thumb.jpg 00100004_thumb.jpg

剩下的就是小菜一碟了。由於您的檔案看起來具有相同的字元長度,因此只需執行

ren *.jpg ????????.jpg

你將擁有:

00400001.jpg 00500124.jpg 00100004.jpg

相關內容