这分为3部分,由Magoo提供以下3个优秀答案。
第1部分;
这些是示例文件名;
丹·威廉姆斯x12c17福特野马 ----我需要删除C17
第2部分;
这些是示例文件名;
dan williams x12c01 ford野马
cindy stan x11c17 lexus rsx
rachel x x09c90 yamaha hayabusa 2008
----我需要删除C**
之后的所有字符。其中C17可以是C01-C90之间的任何字符。
第3部分;
使用这些扩展文件名;
dan williams x12c01 newyork ford mustang.xlsx
cindy stan x11c17 lexus newyork rsx.xlsx
rachel x x09c90 yamaha hayabusa 2008 newyork.xlsx
----我需要删除C**
之后的所有内容,如第2部分所示,同时保留单词newyork
并将其放在文件的末尾,并保留文件扩展名。
思想?
答案 0 :(得分:2)
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir\t w o"
PUSHD "%sourcedir%"
FOR /f "delims=" %%a IN ('dir /b /a-d "*c17*" ') DO (
SET "filename=%%a"
SET "filename=!filename:c17=:!"
FOR /f "tokens=1delims=:" %%r IN ("!filename!") DO echo(REN "%%a" "%%rC17"
)
popd
GOTO :EOF
您需要更改sourcedir
的设置以适合您的具体情况。
为了测试目的,所需的REN命令仅为ECHO
。 在您确认命令正确后,将ECHO(REN
更改为REN
以实际重命名文件。
获取包含c17
的目录中的所有文件名,用冒号替换c17
,在冒号前选择该部分,并将原始文件名重命名为所选部分+ c17
< / p>
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir\t w o"
PUSHD "%sourcedir%"
FOR /L %%v IN (101,1,190) DO (
SET /a cnum=%%v
SET "cnum=c!cnum:~-2!"
IF EXIST "*!cnum!*" (
FOR /f "delims=" %%a IN ('dir /b /a-d "*!cnum!*" ') DO (
SET "filename=%%a"
CALL SET "filename=%%filename:!cnum!=:%%"
FOR /f "tokens=1delims=:" %%r IN ("!filename!") DO ECHO(REN "%%a" "%%r!cnum!"
)
)
)
popd
GOTO :EOF
修改以允许改变cnumber。 cnum
已连续101
分配190
,然后更改为c
+后2位数,c01
.. c90
。< / p>
从那里!cnum!
代替c17
,但使用call set
构造替换文件名。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir\t w o"
PUSHD "%sourcedir%"
FOR /L %%v IN (101,1,190) DO (
SET /a cnum=%%v
SET "cnum=c!cnum:~-2!"
IF EXIST "*!cnum!*" (
FOR /f "delims=" %%a IN ('dir /b /a-d "*!cnum!*" ') DO (
SET "city="
FOR %%n IN (newyork) DO ECHO %%a|FIND /i "%%n" >NUL & IF NOT ERRORLEVEL 1 SET "city=%%n"
SET "filename=%%a"
CALL SET "filename=%%filename:!cnum!=:%%"
FOR /f "tokens=1delims=:" %%r IN ("!filename!") DO ECHO(REN "%%a" "%%r!cnum!!city!%%~xa"
)
)
)
popd
GOTO :EOF
现在会插入newyork
并保留修订后的扩展名。
如果您想在城市名称前面留一个空格,请在=
set city...
之后插入一个空格
答案 1 :(得分:2)
我通常使用我的JREN.BAT regluar expression rename utility进行复杂的重命名操作 - 它比编写自定义批处理脚本简单得多,而且性能更好。 JREN.BAT是一个混合JScript /批处理脚本,可以在XP以后的任何Windows机器上本机运行。
我将所有实用程序放在“c:\ utils”文件夹中,并在我的PATH中包含该文件夹。
关于你对Magoo的评论,我假设如果你有一个c99的文件名,那么你也想重命名它。如果是这样,那么您需要以下一个衬垫:
jren "(c\d\d).*" $1
如果您希望忽略大小写,请添加/I
选项。
jren "(c\d\d).*" $1 /i
使用jren /?
可获得完整文档。您可能希望使用jren /? | more
一次查看一页帮助。但我配置一个大缓冲区我的控制台窗口,所以我可以向上滚动查看过去的输出,我不需要使用更多。
修改强>
我会进行一次编辑以处理您修改后的要求。之后,您可以学习正则表达式和JREN.BAT可用的选项。
jren "(.*?c\d\d).*(newyork).*(\.xlsx)$" "$1 $2$3"
再次添加/I
选项以忽略大小写。