Answers:
我知道在您的标题中您说的是“按剂量”,但给人的印象是您只是在寻找一种做到这一点的方法,并且想知道这是否是最佳方法。
我找到的绝对最佳工具是Bulk Rename Utility。
它不是命令行工具,但是如果您确实想使用命令行版本,则它们确实具有命令行版本。
我已经使用了很多GUI版本,它非常强大,非常快速并且非常易于使用。
哦,它是免费供个人使用。
一个小的PowerShell脚本:
$args | Rename-Item -NewName { $_.Name.ToLower() -replace '\d+ - ' }
结合更复杂的正则表达式,可能会变成:
ls | Rename-Item -NewName {$_ -replace '(\d+) - (.*).mp3', '$2 - $1.mp3' }
这样会将“ 01-Beginning.mp3”变成“ Beginning-01.mp3”。
在发出重命名之前,请使用-WhatIf
on参数Rename-Item
检查重命名。
... -replace '\d+ - ',''
。另外,我相信第一个比较好,只需使用regex除去开头即可。尽管我相信您应该在表达式的开头包括^锚,以便它仅匹配以数字开头的名称。
-replace
右侧可以只有一个参数,在这种情况下,第二个参数隐式为空字符串。
如果您确实要使用Windows命令行(如果您不想下载某些东西),则可以这样做:
dir /B > fileList.txt
for /f "tokens=1,2,3" %i in (fileList.txt) DO ren "%i %j %l" %l
第一行将文件列表输出到名为fileList.txt的文件中。第二行将列表中的每个名称分为3个部分,即#,“-”和其余名称。对于其中的每一个,它都会执行rename命令。
AntRenamer使定义重命名模式变得非常容易。已经准备了很多(并且提供了动作的预览):
免费供个人和商业使用。
老套:
您可以执行DIR并将输出重定向到文件,如DIR * .TXT> TEMP.BAT
然后,使用编辑器取出不需要的内容,并修改所需的部分。在顶部添加“ @echo off”,保存并运行。
我使用Total Commander的多重重命名工具(ctrl + M)进行此类操作。它们有用的工具(数量众多)之一易于使用,并且在必要时还可以使用正则表达式和模板。哦,显然,它可以为您进行任何更改之前的预览。
这是我推荐总指挥官回答的第三个或第四个问题...我应该从他们那里得到佣金;-)
我满意的工具是ReNamer。它还支持保存重命名规则,这对我很有用,因为我很多时候都进行相同的重命名。
以下是如何删除第一个破折号之前的文本的示例,但是您可以定义许多其他规则。
我已经使用Free Commander Portable(免费软件)来达到良好效果:
最简单的方法是使用Rename Master。
这是一个命令行解决方案---我专门编写了一个Java程序,以使其易于使用文件名中的“模式”。它是免费和开源的,因此可以随时对其进行修改:
重命名魔杖
http://renamewand.sourceforge.net/
一些相关的用法示例:
"-"
将文件名前面的所有内容删除:
java -jar RenameWand.jar "<a> - <b>" "<b>"
在文件名前添加一个3位数字,并按上次修改时间排序:
java -jar RenameWand.jar "<a>" "<3|#FT> <a>"
重新排列文件名的部分,并更改大小写:
java -jar RenameWand.jar "<album> - <artist> - <song>.<ext>"
"<artist.upper> <album.title> - <song>.<ext.lower>"
我喜欢Cylog的WildRename。它功能强大,但易于使用,并具有许多功能:
像上面的@zdan一样,我是通过命令行执行此操作的(在Windows中使用“ cmd.exe”)。我的特殊情况花了一些时间,但经过一些研究后才解决。
像zdan一样,我将列表输出到TXT文件,然后使用tokens
并相应delims
地重命名文件。就我而言,我首先列出了一个像这样的文件列表:
name-01-02-2012.csv
我希望文件日期部分按y / m / d顺序排列,并在末尾加上“名称”部分,因此它应如下所示:
2012-01-02-name.csv
为此,我使用了以下代码。请注意,以这种方式执行时,将考虑文件名的所有部分,包括扩展名“ .csv”。第一次使我发疯。
dir /B > fileList.txt
for /f "tokens=1,2,3,4,5 delims=-." %i in (fileList.txt) DO ren "%i-%j-%k-%l.%m" %l-%j-%k-%i.%m
的tokens
是文件名的“零件”,则delims
是分隔符。请注意,在我的情况下,我有2个定界符(一个破折号和一个点)。
我个人不关心“批量重命名”应用程序。正如其他人所提到的,GUI非常残酷并且不是很直观。只需进行少量研究和简单编码,即可高效快速地完成这些工作。
有趣的名称和命令行工具非常强大,非常快速且易于使用。“查找和替换文本” FART http://fart-it.sourceforge.net/很棒 !也可以重命名txt文件中的单词。
Usage: FART [options] [--] <wildcard>[,...] [find_string] [replace_string]
Options:
-h --help Show this help message (ignores other options)
-q --quiet Suppress output to stdio / stderr
-V --verbose Show more information
-r --recursive Process sub-folders recursively
-c --count Only show filenames, match counts and totals
-i --ignore-case Case insensitive text comparison
-v --invert Print lines NOT containing the find string
-n --line-number Print line number before each line (1-based)
-w --word Match whole word (uses C syntax, like grep)
-f --filename Find (and replace) filename instead of contents
-B --binary Also search (and replace) in binary files (CAUTION)
-C --c-style Allow C-style extended characters (\xFF\0\t\n\r\\ etc.)
--cvs Skip cvs dirs; execute "cvs edit" before changing files
-a --adapt Adapt the case of replace_string to found string
-b --backup Make a backup of each changed file
-p --preview Do not change the files but print the changes
-f
选项,如所列。
多重重命名脚本是Total Commanders多重重命名工具的开源替代品,您可以通过脚本进行驱动。它可以使用TC插件获取元数据信息。
@回声关闭 setlocal enabledelayedexpansion 设置X = 5 设置FOLDER_PATH =。 推送%FOLDER_PATH% 对于(*)中的%% f,如果%% f neq%〜nx0( 设置“文件名= %%〜nf” 设置“文件名=!文件名:〜%X%!” 任“ %% f”“!文件名!%%〜xf” ) 弹出
将其保存在批处理文件中并运行
set /p "X=Enter the value for X: "
我使用Blackboard来管理大学中的课程。当我批量下载任务时(在Blackboard中,单击等级列的顶部,然后单击“任务文件下载”),Blackboard在文件名中添加了很多额外的内容-通常会使文件名过长而无法在Windows上有效。
它们是这样的:
Recitation20Assignment_studentname_attempt_2013-03-01-20-03-09_Exercise28129.docx
这就是我想要的
studentname.docx
因此,我通过使用内部包含文件(CMD.EXE)的文件夹打开命令窗口,使用了@zdan和@ gtr1971建议的方法。然后运行此命令将所有文件名放入文档中。
dir /b >filelist.txt
编辑文档并删除文件夹名称等。
使用此命令仅用用户名和文件扩展名替换Blackboard添加的文件名。
for /f "tokens=1,2,3,4,5,6 delims=_." %i in (filelist.txt) do ren "%i _%j_%k_%l_%m.%n" %j.%n
希望这对其他人也有帮助。
这是另一个名为File Attribute Changer的简单程序,可用于重命名文件。这是一个可移植的程序,因此您可以将其放在USB驱动器上。
我已经开发了一个名为JREN.BAT的混合JScript / batch命令行实用程序,可以通过执行正则表达式搜索并替换名称来重命名文件或文件夹。它是纯脚本,它将从XP开始在任何Windows计算机上本地运行。完整的文档嵌入在脚本中。
假设JREN.BAT在当前目录中,或者更好的是,在路径中的某个位置,则重命名任务变得很简单。
jren "^\d+[ -]+(.+)\.txt$" "$1" /i
要么
jren "^\d+[ -]+(?=.+\.)" "" /fm "*.txt"
有很多选项,包括/S
在子目录上递归执行重命名的选项。
如果您需要强大的功能并且愿意花钱... PowerGrep是市场上功能最强大,用途最广泛的工具之一...您可以使用PowerGrep几乎重命名任何东西...甚至可以进行二进制搜索和替换...它是由RegEx Guru Jan Goyvaerts创建的。