我意识到下面列出的每个要求可能都在论坛中单独提供,但我很难将它们全部整合在一起(如果可能的话!)。
希望有人有耐心和时间指出我正确的方向来实现这一目标。
我需要做的是:
扫描特定文件名的目录(和所有子目录)
注意:虽然子目录中有许多文件存在问题,但我们只希望将目标锁定在子目录中,后缀为 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
当找到与文件名匹配的文件并且在上面列出的子目录中时,取一份文件(保留在同一目录中)&amp;根据以下标准重命名:
a)创建日期/时间
b)文件中的某些内容
文件中的内容始终位于ROW 8上,它是前9个字符
原始文件名: FILENAME.txt
成品:FILENAME- 20121129 @ 1300 -123456789.txt
答案 0 :(得分:0)
你应该告诉我们你到目前为止尝试了什么,你的主要问题是什么...... 试试这个 : (删除-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
}
}
}