【发布时间】:2015-05-27 13:31:26
【问题描述】:
我有以下 Powershell 代码,我打算在其中扫描文件夹以查找作为 .TXT 文件放入的新文件,将逗号替换为 | (管道符号),从文件中删除双引号并将文件从 .TXT 重命名为 .CSV 并将其保存到输出文件夹。
param($InputDIR,$OutputDIR)
$Dir = get-childitem $InputDIR -Recurse
$CSVList = $Dir | where {$_.Name -like "*.TXT"}
Write-Host -ForegroundColor White -BackgroundColor Blue "Scanning For Input Files In $InputDIR"
Foreach ($csvfile in $CSVList )
{
#ASSIGN THE CSV FILE INTO A VARIABLE.
$CSVFullFileName = $csvfile.FullName
$CSVFileName = $csvfile.Name
$InputFile = (Join-Path $InputDIR $CSVFileName)
Get-Content $InputFile | ForEach-Object { $_ -replace ",", "|" } | ForEach-Object { $_ -replace """", "" } | Set-Content ($InputFile+".csv")
Write-Host -ForegroundColor White -BackgroundColor Blue "Working on $CSVFileName"
Write-Host -ForegroundColor White -BackgroundColor Blue "Object Scan: $_"
#Remove-Item $InputFile
#Rename-Item ($InputFile+".csv") $InputFile
}
我被难住的问题是 Set-Content 输出的文件带有附加到“.TXT”的“.CSV”扩展名,如下所示:“myfile.TXT.CSV”。
我怎样才能做我想做的事,并将新文件输出为没有原始 .TXT 扩展名的 .CSV 扩展名?
【问题讨论】:
-
您的平均更改扩展名?!
ren myfile.txt myfile.txt.csv或Dir *.txt | rename-item -newname { $_.name -replace '\.txt$','.csv' } -
问题是您使用原始名称并将
.csv添加到它的末尾。如果要替换扩展名,则需要先从原始文件名中删除扩展名。 -
Dir *.txt | rename-item -newname { $_.name -replace '\.txt$','.txt.csv' }然后我将 i .txt 更改为 .txt.csv :-?
标签: powershell csv batch-processing powershell-3.0 file-extension