Обрезать дату по имени файла с помощью powershell или cmd - PullRequest
1 голос
/ 10 января 2012

Как вы обрежете дату из текстового файла.Например, у меня есть несколько файлов, таких как:

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

Я быхотел бы изменить на:

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

Спасибо.

Ответы [ 2 ]

2 голосов
/ 17 января 2012

Этот код должен работать, предполагая, что формат имени текстового файла не меняется, как, например, это всегда последние 9 символов, которые вам нужно удалить.Этот код предполагает, что текстовые файлы находятся в папке 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
    }
0 голосов
/ 10 января 2012

Ответ на этот вопрос будет слегка изменяться в зависимости от типа шаблона именования, но в вашем случае вы можете выполнить это с помощью сценария, подобного следующему:

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"
        }
    }

Этот скрипт должен дать вам то, что вы хотите от файлов, которые соответствуют вашему соглашению об именах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...