使用批处理替换前缀和后缀

时间:2014-12-27 19:18:03

标签: batch-file cmd

我有数百个名称为

的文件

MUZ-123456-KH.txt

我想用替换 PREFIX SUFFIX

替换此类型的文件名

muz123456.txt

表示: 前缀 MUZ - 将替换为 muz

后缀 -KH 替换为

我有一个很多次的工具。任何人都可以帮助我吗?

这是日常工作,我累了

3 个答案:

答案 0 :(得分:0)

您可以使用文件模式匹配(使用DIR命令)和文本替换(使用SET命令)的组合来执行此操作。

我添加了评论来解释每个步骤的作用。

@ECHO OFF
SETLOCAL EnableExtensions EnableDelayedExpansion

REM Process all files matching the pattern.
FOR /F "usebackq tokens=* delims=" %%A IN (`DIR /B /S "C:\Path\To\Files\MUZ-*-KH.txt"`) DO (
    ECHO Processing: %%~A

    REM Get just the file name.
    SET NewName=%%~nxA
    REM Replace prefix.
    SET NewName=!NewName:MUZ-=muz!
    REM Replace suffix.
    SET NewName=!NewName:-KH=!

    ECHO Renaming to: !NewName!

    REM Rename the file. 
    RENAME "%%~fnxA" "!NewName!"

    ECHO.
)

ENDLOCAL

答案 1 :(得分:0)

假设文件遵循以下格式:

prefix dash datawithnodash dash suffix . txt
@echo off
    setlocal enableextensions disabledelayedexpansion

    set "prefix=MUZ"
    set "suffix=KH"
    set "extension=txt"

    pushd "c:\where\theFilesAre" && (
        for /f "tokens=1,2 delims=-" %%a in ('
            dir /b /a-d /l "%prefix%-*-%suffix%.%extension%"
        ') do ren "%prefix%-%%b-%suffix%.%extension%" "%%a%%b.%extension%"
        popd
    )

这使用短划线作为分隔符来分隔文件名的元素,仅检索前缀和有效数据,丢弃其余部分。使用dir命令检索文件列表,以小写形式请求它以调整前缀大小写。

答案 2 :(得分:0)

如果您理解正则表达式,那么使用JREN.BAT - a hybrid JScript/batch utility that renames files via regular expression search and replace.非常简单.JREN.BAT是从XP开始在任何Windows机器上本机运行的纯脚本。

正则表达式允许指定非常精确的重命名规则。

下面的一个衬垫寻找:

  • 除破折号(前缀)
  • 之外的任何字符集
  • 然后短划线
  • 然后是任何一组数字
  • 然后是一个破折号,后跟除了破折号(后缀)
  • 之外的任何字符集
  • 以.txt结尾(扩展名,不区分大小写)

它保留前缀和数字以及扩展名,使整个小写

jren "^([^-]+)-(\d+)-[^-]+(\.txt)$" "lc($1+$2+$3)" /i /j