【问题标题】:rename the specific file with current time stamp using perl script for windows使用 Windows 的 perl 脚本重命名具有当前时间戳的特定文件
【发布时间】:2017-09-12 05:34:37
【问题描述】:

我正在使用以下脚本重命名,但它正在重命名以 STA 结尾的所有文件。我需要重命名以 KRAT 或 TRAT 开头的文件。

#!/usr/local/bin/perl 
use strict; 
use warnings; 
use File::Copy; 

my $directory = 'C:\Users\Desktop'; 

chdir($directory) or die "Can't chdir to $directory $!"; 
opendir(DIR, $directory) || die "Couldn't opendir: $!\n"; 

my @files = grep { $_ ne '.' && $_ ne '..' } readdir DIR; 

foreach(@files) { 
    print $_,"\n"; 
    my $newName = $_; 

    $newName =~ s/STA$/t00/g; 
    print "RENAMING: $_ -> $newName \n"; 

    rename($_, $newName); 

}

【问题讨论】:

  • 我用下面的代码#!/usr/local/bin/perl use strict;使用警告;使用文件::复制;我的 $directory = 'C:\Users\rajkunal_aps\Desktop'; chdir($directory) 或 die "Can't chdir to $directory $!";开放目录(目录,$目录)|| die "无法打开目录:$!\n";我的@files = grep { $_ ne '.' && $_ ne '..' } readdir DIR; foreach(@files) { 打印 $_,"\n";我的 $newName = $_; $newName =~ s/STA$/t00/g;打印“重命名:$_ -> $newName \n”;重命名($_,$newName); }
  • 你忘了问问题!
  • 看起来你已经拿起了别人的脚本并将其发布在此处以根据你的要求对其进行修改。这不是编程的工作方式。在让世界其他地方为您完成工作之前,您至少应该自己做出一些努力。

标签: perl perl-module


【解决方案1】:

换行

$newName =~ s/STA$/t00/g;

$newName =~ s/^KRAT|^TRAT/t00/;

或更简洁。

#!/usr/local/bin/perl
use strict;
use warnings;

my $directory = '<DIR>';

chdir($directory) or die "Can't chdir to $directory $!";
opendir(DIR, $directory) || die "Couldn't opendir: $!\n";

rename_file($_) for grep { $_ ne '.' && $_ ne '..' && /^KRAT|^TRAT/} readdir DIR

closedir(DIR);

sub rename_file {
    my $name = shift;
    $name =~ s/^KRAT|^TRAT/t00/;
    rename($_, $name);
}

【讨论】:

  • 不,它不起作用----我有文件 -ABC.txt,CDE.STA.LMP.STA,GYI.STA,我只需要将 GYI.STA 更新为 GYI.txt
  • 为什么只重命名GYI.STA?为什么不CDE.STA 等?
  • map 旨在实现从一个列表到另一个列表的映射,在 void 上下文中使用它是错误的。你需要一个简单的for,像这样rename_file($_) for grep { $_ ne '.' &amp;&amp; $_ ne '..' &amp;&amp; /^KRAT|^TRAT/} readdir DIR
  • use File::Copy 是多余的。
  • 请不要鼓励人们在无效上下文中使用map。这个表达式最好写成rename_file($_) for grep { ... } readdir DIR
猜你喜欢
  • 1970-01-01
  • 2022-01-23
  • 2022-07-08
  • 2014-08-05
  • 2016-08-17
  • 1970-01-01
  • 2017-10-25
  • 2020-01-27
  • 2015-05-04
相关资源
最近更新 更多