使用powershell或cmd从文件名修剪日期

时间:2012-01-10 03:44:51

标签: powershell powershell-v2.0

如何修剪文本文件中的日期。例如,我有多个文件,如:

  • test_20091011.txt
  • try_20091011.txt
  • fold_20091011.txt

我想换成:

  • 的test.txt
  • try.txt
  • fold.txt

感谢。

2 个答案:

答案 0 :(得分:2)

此代码应该可以正常运行,假设文本文件名格式不会更改,例如,它始终是您需要删除的最后9个字符。此代码假定txt文件位于文件夹C:\ folder

    $filelist = (get-childitem c:\folder | Where-Object {$_.mode -match "a"} | foreach-object {$_.name})
foreach ($file in $filelist)
    {
        $len = $file.length
        $newname = $file.substring(0,$len -13)
        $newname = $newname + '.txt'
        Rename-Item C:\folder\$file $newname
        clear-variable newname, len
    }

答案 1 :(得分:0)

这个问题的答案会根据命名模式的类型而有所改变,但在你的情况下,你可以用这样的脚本完成这个:

Get-ChildItem | 
    Where-Object {
        <# 
        Multiple Assignment in PowerShell.  
        $beforeUnderbar will have your name, 
        $AfterUnderBar will have the data, and 
        $extension will have the extension. 
        All from one little -split  
        If you start throwing random other files in there, it will barf.
        #>
        $beforeUnderbar, $afterUnderBar, $extension = ($_.Name -split "[_.]")
        if ($afterUnderBar -and $afterUnderBar.Length -eq 8 -and $afterUnderBar -as [int]) {
        "$beforeUnderBar.$extension"
        }
    }

该脚本应该根据您的命名约定为您提供所需的文件。