我有许多文件,我想重新排列名称。使用批处理脚本重新排序文件夹中的文件名
目前的文件名改为
XXX-YYYYY-ZZZ-A1B2C3
我想重新排序A1B2C3到ABC123。
XXX-YYYYY-ZZZ-ABC123
字符串的XYZ部分将每个文件可变的长度,所述A1B2C3将总是在字符串的末尾。
能够对当前文件夹中的所有文件进行批处理是一个很好的起点,并且对当前文件夹和所有子目录中的所有文件进行批处理会更好。
任何帮助非常感谢!
我有许多文件,我想重新排列名称。使用批处理脚本重新排序文件夹中的文件名
目前的文件名改为
XXX-YYYYY-ZZZ-A1B2C3
我想重新排序A1B2C3到ABC123。
XXX-YYYYY-ZZZ-ABC123
字符串的XYZ部分将每个文件可变的长度,所述A1B2C3将总是在字符串的末尾。
能够对当前文件夹中的所有文件进行批处理是一个很好的起点,并且对当前文件夹和所有子目录中的所有文件进行批处理会更好。
任何帮助非常感谢!
@echo off
setlocal EnableDelayedExpansion
for /F "delims=" %%f in ('dir /A-D /B *.*') do (
for /F "tokens=1-4 delims=-" %%a in ("%%~Nf") do (
set "last=%%d"
set "new=!last:~0,1!!last:~2,1!!last:~4,1!!last:~1,1!!last:~3,1!!last:~5,1!"
ECHO ren "%%f" "%%a-%%b-%%c-!new!%%~Xf"
)
)
输出例如:
C:\> test.bat
ren "XXX-YYYYY-ZZZ-A1B2C3.ext" "XXX-YYYYY-ZZZ-ABC123.ext"
ren "XXX-YYYYY-ZZZ-X9Y8Z7.ext" "XXX-YYYYY-ZZZ-XYZ987.ext"
这个代码几点:
你的描述说什么有关文件扩展所以我假定文件有一个。如果不是,只需删除ECHO ren命令中的%%~Xf
部分即可。
最后的命令只是显示在屏幕上的REN命令。如果REN命令看起来正确,则删除ECHO部分以便执行 REN。您也可以复制此行,以便在执行REN命令时查看它们。
要还处理所有子目录,在DIR命令添加/ S开关是这样的:dir /A-D /B /S *.*
如果您有没有需要重命名还有其他文件,您可以选择只这些文件改变*.*
野卡片在DIR命令由*-*-*-*.*
你还没有提到你正在使用哪个操作系统。我假设你使用* nix(Linux,OSX,BSD等);在Windows上,您可以随时安装Perl和/或Cygwin。
使用以下重命名脚本,你可以写Regular Expressions重命名文件:
#!/usr/bin/perl -w
# rename - fix up file names
# examples:
# rename 's/\.orig$//' *.orig
# rename 'tr/A-Z/a-z/ unless /^Make/' *
# rename '$_ .= ".bad" *.f
$op = shift or die "Usage: rename expr [files]\n";
chomp(@ARGV = <STDIN>) unless @ARGV;
for (@ARGV)
{
$was = $_;
eval $op;
die [email protected] if [email protected];
rename($was, $_) unless $was eq $_;
}
(注:我没有写这个命名脚本 - 它已经在互联网踢多年)。
例如,从您的所有文件开始删除XXX-,你会怎么做:
~/bin/rename 's/^XXX-//' *
正则表达式重命名A1B2C3到ABC123留作练习为读者。
它适用于Windows;请参阅'batch-file'标签的说明:“批处理文件是一个文本文件,其中包含由DOS,OS/2或Microsoft Windows系统上的命令解释程序执行的一系列命令。” – Aacini
我必须说我是一个完整的初学者,我在窗户上。我确实安装了批量重命名工具,它具有RegEx功能..是否可以使用此工具? (\ d {16}) - (\ d {1}) - (\ d {1}) - (\ d {1})之类的东西, - (\ d {1}) - (\ d {1}) - (\ d {1})/ $ 1- $ 2- $ 4- $ $ 6- 3- $ 5- $ 7 /; – swifty
@Aacini做这个OP几乎肯定需要使用正则表达式;安装Perl将是实现这一点的一个简单方法。我将在将来关注标签:-) –
是'A1B2C3'部分长度=六个字符_always_? – JosefZ
是的,是正确的。 – swifty
我使用Naru的Flexible Renamer工具获得了很好的结果(http://hp.vector.co.jp/authors/VA014830/english/FlexRena/)。它允许但不要求正则表达式,并在提交之前提供实时的GUI预览结果更改。如果您的需求一天改变,可能会有好处。 – user1016274