Datetime 用于根据特定条件重命名TXT文件的Powershell脚本

Datetime 用于根据特定条件重命名TXT文件的Powershell脚本,datetime,powershell,recursion,rename,Datetime,Powershell,Recursion,Rename,我意识到下面列出的每一项要求都可能在这里的论坛中单独提供,但我正在努力将它们全部整合在一起(如果可能的话!) 希望有人有耐心和时间为我指出正确的方向,让这一切发生 我需要做的是: 扫描目录(和所有子目录)以查找特定的文件名 注意:虽然子目录中有许多文件的文件名有问题,但我们只希望将后缀为JERRY的子目录中的文件作为目标 即,在下面的示例中,箭头指示的文件将成为目标 ONE\NEW1-JERRY\FILENAME.TXT <---- ONE\NEW1-TOM\FILENAME.TXT

我意识到下面列出的每一项要求都可能在这里的论坛中单独提供,但我正在努力将它们全部整合在一起(如果可能的话!)

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


我需要做的是:

  • 扫描目录(和所有子目录)以查找特定的文件名

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

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

    ONE\NEW1-JERRY\FILENAME.TXT   <----
    ONE\NEW1-TOM\FILENAME.TXT
    ONE\NEW1-SYLVESTER\FILENAME.TXT
    TWO\NEW2-JERRY\FILENAME.TXT    <----
    TWO\NEW2-TOM\FILENAME.TXT
    TWO\NEW2-SYLVESTER\FILENAME.TXT
    THREE\NEW3-JERRY\FILENAME.TXT    <----
    THREE\NEW3-TOM\FILENAME.TXT
    THREE\NEW3-SYLVESTER\FILENAME.TXT
    FOUR\NEW4-JERRY\FILENAME.TXT    <----
    FOUR\NEW4-TOM\FILENAME.TXT
    FOUR\NEW4-SYLVESTER\FILENAME.TXT
    

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


    感谢您的帮助,此脚本完成了我的任务-一个关于以下行的快速问题-->
    $newName=Get Date-UFormat“%Y%m%d”
    -这是从原始文件检索系统日期/时间还是创建日期/时间?如果答案是系统日期/时间,您能否提供返回原始文件创建日期的语法?谢谢
    $newName=($.CreationTime).toString().split(“”)[0]
    别忘了将帖子标记为答案,再次感谢您的帮助!稍微调整一下,您的命令就给出了我想要的内容:
    $newName=($\u.CreationTime).toString(“yyyyMMdd@hhmm“”.split(“”)[0]
    既然我已经处理了积压的文本文件,我只想筛选过去24小时内创建的文件,作为日常任务运行,您是否能够帮助修改脚本以处理此问题?提前谢谢!如果目录中已经存在具有新名称的文件,另一个选项(如果可用)是跳过文件复制和重命名?谢谢首先,如果这篇文章对你有帮助,你应该把它标记为答案或有用
    #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 
                }  
            }
        }