Переименование файла с добавлением +01 в конце - PullRequest
0 голосов
/ 08 мая 2019

В настоящее время я беру файл CSV и переименовываю его в файл .txt.В настоящее время я сохраняю имя как yyyymmdd.txt, я пытаюсь проверить папку для txt-файла и добавить "-01" к файлу.(yyyy-mm-dd-01.txt, ..-02, ..-03, ..) каждый раз, когда скрипт проверяет, он должен добавить 01 к файлу.Моя текущая проблема заключается в том, что файл переименовывается в yyyymmdd.txt01, и если он проверяет, он просто помещает yyyymmdd.txt11

Я пробовал несколько способов, но не удалось.

$filevalue = 'C:\test\test_notepad.csv'
$path = 'C:\test\'
$file = 'test.txt'
$file2 = 'test_notepade.csv'
$date = Get-Date -Format "yyyy-mm-dd-"
$filename = "$date.txt"
Rename-Item $filevalue $filename
$originalFiles = Get-ChildItem "C:\test\text" -Filter *.txt
$x = 1
ForEach ($originalFile in $originalFiles) {
    $x++
    Rename-Item -Path $originalFile.FullName -NewName ($originalFile.Name -replace "^", "1")
}

1 Ответ

0 голосов
/ 08 мая 2019

вот способ сделать то, что вы хотите.перед ForEach-Object нужно создать тестовый файл и убедиться, что он есть только один, поскольку я не включил проверку ошибок.[ ухмылка ]

что он делает ...

  • повторяется 17 раз для проверки кода
  • получает информацию о файле
  • разбивает .BaseName на уникальный _ символ
  • , захватывает последний элемент в результирующем массиве
  • преобразует эту числовую строку в [int]
  • увеличивает
  • дополняет его до двух цифр
  • заменяет старый номер seq в имени файла новым
  • переименовывает файл

вот код ...

$Today = Get-Date -Format 'yyyy-MM-dd'

# delete any existing test file
$Null = Remove-Item -Path "$env:TEMP\$($Today)_*.txt" -ErrorAction SilentlyContinue
# create a file to work with
$Null = New-Item -Path $env:TEMP -Name "$($Today)_07.txt" -ItemType File -ErrorAction SilentlyContinue

# pretend to access the listing 17 times
1..17 |
    ForEach-Object {
        $FileInfo = Get-ChildItem -LiteralPath $env:TEMP -Filter "$Today*.txt"
        $OldSeqNumber = $FileInfo.BaseName.Split('_')[-1]
        $NewSeqNumber = '{0:D2}' -f ([int]$OldSeqNumber + 1)

        $NewFileName = $FileInfo.Name.Replace("_$OldSeqNumber", "_$NewSeqNumber")

        Rename-Item -LiteralPath $FileInfo.FullName -NewName $NewFileName
        }

оригинальное имя файла = 2019-05-07_07.txt
последнее новое имя файла = 2019-05-07_24.txt

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