如何通过删除多个文件的最后一部分名称来重命名

如何通过删除多个文件的最后一部分名称来重命名

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

例如:ERKS 400001_thumb.jpg
    ERKS 500124_缩略图.jpg
    ERKS 100004_缩略图.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_缩略图.jpg
    00100004_缩略图.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

相关内容