我当前正在获取一个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")
}
答案 0 :(得分:0)
这是一种执行所需操作的方法。 ForEach-Object
之前的工作是制作一个测试文件-并确保只有一个,因为我没有进行任何错误检查。 [咧嘴]
它做什么...
.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