从文件名中删除 space
Remove space from a filename
我无法找到问题的答案,所以我制作了 windows-cmd 之类的程序,我的功能之一是重命名文件。如果旧名称/新名称中没有白色space,一切都很好,但只要有space,它就不起作用。我一直在研究如何从旧名称和新名称(如果有的话)中删除白色 space,然后继续重命名并将白色 space 放回去,但我不知道如何继续……我一直在阅读一些关于 "trim" 的内容,但没有帮助。这是我的代码的一部分:
elsif ($fr eq 'ren') {
$getmenu =~ s/ren //g;
my ($rf,$kb) = split /[ ]/,$getmenu;
rename($rf, $kb) || die "Error\n";
print "\n>$rf has been renamed as $kb\n";
}
您使用空格来指示文件名的开始和结束位置,因此名称中不可能有任何空格。这就是 shell 使用引号和转义机制的原因。您需要将这些引入您的命令语言。
既然白色space字有问题,我会:
- 将它们替换为占位符符号(如连字符、竖线或@)
- 重命名文件
- 再次用 spaces 替换占位符
这个问题展示了如何做到这一点:
Replace whitespace with hyphen in Perl
我无法找到问题的答案,所以我制作了 windows-cmd 之类的程序,我的功能之一是重命名文件。如果旧名称/新名称中没有白色space,一切都很好,但只要有space,它就不起作用。我一直在研究如何从旧名称和新名称(如果有的话)中删除白色 space,然后继续重命名并将白色 space 放回去,但我不知道如何继续……我一直在阅读一些关于 "trim" 的内容,但没有帮助。这是我的代码的一部分:
elsif ($fr eq 'ren') {
$getmenu =~ s/ren //g;
my ($rf,$kb) = split /[ ]/,$getmenu;
rename($rf, $kb) || die "Error\n";
print "\n>$rf has been renamed as $kb\n";
}
您使用空格来指示文件名的开始和结束位置,因此名称中不可能有任何空格。这就是 shell 使用引号和转义机制的原因。您需要将这些引入您的命令语言。
既然白色space字有问题,我会:
- 将它们替换为占位符符号(如连字符、竖线或@)
- 重命名文件
- 再次用 spaces 替换占位符
这个问题展示了如何做到这一点: Replace whitespace with hyphen in Perl