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
我需要做的是:
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
}
}
}