这真是令人费解。我有很多视频是用 Mac OS 存储的,现在我必须在 Windows XP 上编辑它们。我使用 HFSExplorer 复制了文件。编辑软件拒绝以当前名称打开文件,到目前为止我还没有找到批量重命名所有文件的方法。
文件的名称如下所示:
剪辑-2009-10-01 21;26;00.mov
但我怀疑在 OSX 中时间是 21:26:00。
我想用下划线代替空格,用破折号代替分号。
我尝试过几个批量重命名应用程序,使用 ; 和 :,但都失败了。我也尝试过 rename.pl,但同样失败了。
答案1
更新:
我们假设“clip-2009-10-01 21;26;00.mov”不是实际文件名;一种可能性是实际文件名是“clip-2009-10-01 21:26:00.mov”。但是,我们无法在 Windows 下验证这一点。
我们也许不需要。
故障安全方法:
启动 Linux LiveCD。Ubuntu 9.04 具有良好的 NTFS 支持,并且 Linux 比 Windows 能够处理更多文件名中的奇怪字符。perl 重命名脚本可能包含在系统的重命名命令中。
这有可能-实际上-工作批处理方法(新脚本!)
DOS 命令 DIR/X 显示短文件名,如果它们存在于您的系统中。
$ cmd
c:\test> dir /x
Volume in drive E is NUVOL
Volume Serial Number is 80D3-A96D
Directory of e:\tor\test
10/04/2009 05:15 AM <DIR> .
10/04/2009 05:15 AM <DIR> ..
10/04/2009 05:11 AM 0 CLIP-2~1.MOV clip-2009-10-01 21;26;00.mov
1 File(s) 0 bytes
2 Dir(s) 5,201,670,144 bytes free
如果它们确实存在,REN 命令会将它们移动到新名称;新名称可以是新的(有效的)长文件名。
c:\test> ren CLIP-2~1.MOV "clip-2009-10-01_21-26-00.mov"
这就是修复方法。
要批量处理所有这些文件,您需要 1) 获取要移动的所有文件的列表;2) 运行一个简短的 perl 脚本,使用适当的 REN 命令将您的列表转换为批处理文件;3) 运行生成的批处理脚本。
c:\test> dir /x > mybrokenfiles.lst
$ cat mybrokenfiles.lst | perl -lne 'next if not /MOV/; s/^.{1,39}//; s/^/ren /; s/ (\d\d);(\d\d);(\d\d)/_$1-$2-$3/; print' > fixmybrokenfiles.bat
c:\test> fixmybrokenfiles.bat
perl 命令行假定一种非常特殊的输入格式,因此如果 DOS 列表显示长文件名不是“21;26;00.mov”格式,它可能不会完全按照您的要求执行。如果您尝试执行,请在运行批处理脚本之前仔细检查它是否正确。
如果您熟悉 perl(或 sed/awk、python 等),您可以自己编写脚本。但如果 DIR/X 不显示短文件名,则您的系统已禁用它们,并且此解决方案无济于事。
原始答案:就我们现在所知,这没什么用,但如果您再次从 OSX 复制此类文件,则可以在复制之前使用它作为预防步骤。
我在 Windows 和 Linux 系统上都经常使用命令行。互联网上流传着一个方便的 perl 脚本,它允许使用标准 perl 正则表达式批量重命名文件(在 Google 上搜索 rename.pl 即可找到它)。
在 Windows 上的 Cygwin 下,在文件所在的目录中使用以下命令重命名它们:
$ ls
clip-2009-10-01 21;26;00.mov
$ rename.pl 'tr/ ;/_-/;' *
$ ls
clip-2009-10-01_21-26-00.mov
很确定我的版本来自Perl 食谱:
#!/usr/bin/perl -w
# rename - Larry's filename fixer
$op = shift or die "Usage: rename expr [files]\n";
chomp(@ARGV = <STDIN>) unless @ARGV;
for (@ARGV) {
$was = $_;
eval $op;
die $@ if $@;
rename($was,$_) unless $was eq $_;
}
答案2
查看重命名主文件,它有多种批量操作文件名的方法。您将需要查看代替标签。
Rename Master 是免费软件。
答案3
卢帕斯改名是一款免费软件程序,用于重命名大量文件。它适用于 Win95、Win98、WinME、WinNT、Win2K 和 WinXP。它是一个简单的 .EXE 文件,不需要任何其他外部库。
以下是一些特点:
- 重命名文件和文件夹
- 重命名递归子目录中的文件
- Shell 集成(右键单击资源管理器中的文件夹以启动该文件夹上的 LupasRename)
- 即时预览(可选)
- 撤消上次重命名操作
- 创建批处理文件以从 DOS 控制台重命名
- 从 DOS 控制台创建用于 UNDO 操作的批处理文件
- 保存并将选项加载到 INI 文件中
- 按任意掩码过滤:.mp3;.mp2 或 ???a*.txt...
- 使用 Matchcase 可选方法将子字符串替换为其他子字符串
- 在扩展中用 Matchcase 可选方法将子字符串替换为其他字符串
答案4
总指挥官包括一个名为 Multi-Rename Tool 的批量重命名工具(默认快捷键是 Ctrl+M)。
在您的情况下,您可以通过运行两次过程来重命名文件,一次替换空格,一次替换分号。
另一种方法是使用重命名掩码 - 选择空格前的范围,添加下划线,然后选择空格后的范围,同时使用搜索和替换将分号替换为破折号。