我有数百个文件与名称替换前缀和后缀使用批处理
MUZ-123456-KH.txt
我想更换PREFIX和后缀来代替这种类型的文件名
muz123456.txt
的意思是: 前缀MUZ-是MUZ
后缀-KH替换被替换没有
我有一个工具,它需要大量的时间。谁能帮我?
其日常工作和我厌倦了
我有数百个文件与名称替换前缀和后缀使用批处理
MUZ-123456-KH.txt
我想更换PREFIX和后缀来代替这种类型的文件名
muz123456.txt
的意思是: 前缀MUZ-是MUZ
后缀-KH替换被替换没有
我有一个工具,它需要大量的时间。谁能帮我?
其日常工作和我厌倦了
您可以使用匹配的文件模式(与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
谢谢大家 – muzaffar 2014-12-28 05:28:03
在假设文件遵循以下格式:
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
命令检索文件列表,以小写形式请求以适应前缀大小写。
如果您了解正则表达式,那么它很简单,使用JREN.BAT - a hybrid JScript/batch utility that renames files via regular expression search and replace. JREN.BAT是纯粹的脚本,可以从任何Windows XP机器上运行本机上运行。
正则表达式允许指定非常精确的重命名规则。
下一个衬里查找:
它保留了前缀和编号和扩展,使得整个事情小写
jren "^([^-]+)-(\d+)-[^-]+(\.txt)$" "lc($1+$2+$3)" /i /j
约你要解决这个问题更清楚。你想重命名文件系统中的文件还是在包含名称列表的文本文件中更改它们的名称。你在做什么系统?文件是在一个目录还是许多不同的目录中。 etc .. – 2014-12-27 19:23:58
所有这些.txt文件只能放在一个目录中(名称:Muzaffar)。我只想替换文件名,因为我提到在上面的查询 – muzaffar 2014-12-27 19:39:04
可能重复[替换文件名在同一目录根据项目要求](http://stackoverflow.com/questions/27674887/replace-filename-in-same-directory -according-to-project-requirement) – DavidPostill 2014-12-28 12:34:22