重命名文件,同时在末尾添加+01

时间:2019-05-07 21:45:57

标签: powershell

我当前正在获取一个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 :(得分:0)

这是一种执行所需操作的方法。 ForEach-Object之前的工作是制作一个测试文件-并确保只有一个,因为我没有进行任何错误检查。 [咧嘴]

它做什么...

  • 反复进行17次以测试代码
  • 获取文件信息
  • .BaseName拆分为唯一的_字符
  • 抓取结果数组中的最后一项
  • 将该数字字符串转换为[int]
  • 增加它
  • 将其填充到两位数
  • 将文件名中的旧序列号替换为新的
  • 重命名文件

这是代码...

$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