Powershell基于特定条件重命名TXT文件的脚本



我意识到下面列出的每个需求很可能在论坛中单独提供,但我正在努力将它们整合在一起(如果可能的话!)。

希望有人有耐心和时间为我指明正确的方向,让这一切发生。


我需要做的是:

  1. 扫描一个目录(和所有子目录)以查找特定的文件名

    注意:虽然子目录中有许多文件的文件名有问题,但我们只希望针对后缀为JERRY的子目录中的文件

    即。在下面的例子中,箭头指示的文件将成为的目标

    ONENEW1-JERRYFILENAME.TXT   <----
    ONENEW1-TOMFILENAME.TXT
    ONENEW1-SYLVESTERFILENAME.TXT
    TWONEW2-JERRYFILENAME.TXT    <----
    TWONEW2-TOMFILENAME.TXT
    TWONEW2-SYLVESTERFILENAME.TXT
    THREENEW3-JERRYFILENAME.TXT    <----
    THREENEW3-TOMFILENAME.TXT
    THREENEW3-SYLVESTERFILENAME.TXT
    FOURNEW4-JERRYFILENAME.TXT    <----
    FOURNEW4-TOMFILENAME.TXT
    FOURNEW4-SYLVESTERFILENAME.TXT
    
  2. 当发现文件与文件名匹配并且在上面列出的子目录中时,复制文件(保留在同一目录中)&基于以下条件重命名:

    a) 创建日期/时间

    b) 文件中的某些内容

    文件中的内容始终位于第8行,并且是的前9个字符

    原始文件名:filename.txt

    成品:FILENAME-20121129@1300-123456789.txt


提前感谢

您应该告诉我们到目前为止您尝试了什么,以及您的主要问题是什么。。。试试这个:(删除-whatif标志以实际复制文件)

#list dir & subdirs
ls c: -recurse |
Foreach { 
#find subdirs named JERRY
if($_.PSIsContainer -and $_.name -match "JERRY"){
ls $_.fullname -filter 'FILENAME*' |
Foreach{ 
$fcontent=get-Content $_.FullName
$content=$fcontent[7].Substring(0,9)
$newName=Get-Date -UFormat "%Y%m%d"
$destination="$($_.Directory)$newName@$content.txt"
write-verbose $destination
Copy-Item $_.FullName -Destination $destination -WhatIf 
}  
}
}

最新更新