-1

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

希望有人有耐心和时间为我指明正确的方向以实现这一目标。


我需要做的是以下几点:

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

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

    IE。在下面的示例中,箭头指示的文件将被定位

    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
    
  2. 当找到与文件名匹配的文件并且位于上面列出的子目录中时,获取文件的副本(保留在同一目录中)并根据以下条件重命名:

    a) 创建日期/时间

    b) 文件中的某些内容

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

    原始文件名: FILENAME.txt

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


提前致谢!

4

1 回答 1

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 
            }  
        }
    }
于 2012-11-29T07:36:59.270 回答