Batch file 使用批处理替换前缀和后缀
我有数百个文件名为 MUZ-123456-KH.txt 我想用替换前缀和后缀来替换这种类型的文件名 muz123456.txt 指: 前缀MUZ-替换为MUZ 后缀-KH替换为none 我有一个需要很多时间的工具。有人能帮我吗Batch file 使用批处理替换前缀和后缀,batch-file,cmd,Batch File,Cmd,我有数百个文件名为 MUZ-123456-KH.txt 我想用替换前缀和后缀来替换这种类型的文件名 muz123456.txt 指: 前缀MUZ-替换为MUZ 后缀-KH替换为none 我有一个需要很多时间的工具。有人能帮我吗 这是一项日常工作,我很累您可以使用文件模式匹配(使用DIR命令)和文本替换(使用SET命令)的组合来完成这项工作 我添加了注释来解释每一步都在做什么 @ECHO OFF SETLOCAL EnableExtensions EnableDelayedExpansion R
这是一项日常工作,我很累您可以使用文件模式匹配(使用
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
假设文件遵循以下格式:
prefix dash datawithnodash dash suffix . txt
@echo关闭
setlocal enableextensions disabledelayedexpansion
设置“prefix=MUZ”
设置“后缀=KH”
设置“extension=txt”
按下“c:\where\theFilesAre”&&(
对于/f“令牌=1,2 delims=-”%%a in('
目录/b/a-d/l“%prefix%-*-%suffix%.%extension%”
“)是否执行“%prefix%-%%b-%suffix%.%extension%”%%a%%b.%extension%”
邻苯二胺
)
这将使用破折号作为分隔符来分隔文件名的元素,仅检索前缀和有效数据,而丢弃其余数据。使用
dir
命令检索文件列表,以小写形式请求它以适应前缀大小写。如果您了解正则表达式,那么使用JREN.BAT非常简单,它是从XP开始在任何Windows机器上本机运行的纯脚本
正则表达式允许指定非常精确的重命名规则
下面的一行查找:
- 除破折号(前缀)以外的任何字符集
- 然后是冲刺
- 然后是任意一组数字
- 然后是破折号,后跟破折号(后缀)以外的任何字符集
- 以.txt结尾(扩展名,不区分大小写)
jren "^([^-]+)-(\d+)-[^-]+(\.txt)$" "lc($1+$2+$3)" /i /j
更清楚地了解你正在解决的问题。是否要重命名文件系统中的文件,或在包含名称列表的文本文件中更改其名称。你使用的是什么系统?是一个目录中的文件还是多个不同的目录中的文件。etc etcAll这些.txt文件只放在一个目录中(名称:Muzaffar)。我只想替换我在上面的querypossible duplicate中提到的文件名