如何使用Powershell集合内容重命名文件扩展名
我有下面的Powershell代码,我打算扫描一个文件夹,查找放入.TXT文件中的新文件,将逗号替换为|(管道符号),从文件中删除双引号,并将文件从.TXT重命名为.CSV,然后将其保存到输出文件夹如何使用Powershell集合内容重命名文件扩展名,powershell,csv,batch-processing,powershell-3.0,file-extension,Powershell,Csv,Batch Processing,Powershell 3.0,File Extension,我有下面的Powershell代码,我打算扫描一个文件夹,查找放入.TXT文件中的新文件,将逗号替换为|(管道符号),从文件中删除双引号,并将文件从.TXT重命名为.CSV,然后将其保存到输出文件夹 param($InputDIR,$OutputDIR) $Dir = get-childitem $InputDIR -Recurse $CSVList = $Dir | where {$_.Name -like "*.TXT"} Write-Host -ForegroundColor Whit
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
}
我遇到的问题是,设置的内容输出的文件在“.TXT”后面附加了“.CSV”扩展名,如下所示:“myfile.TXT.CSV”
我如何做我正在尝试做的事情,并在没有原始.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)
$newFileName = "{0}.csv" -f ([io.path]::GetFileNameWithoutExtension($CSVFileName))
$newFilePath = (Join-Path $InputDIR $newFileName)
Get-Content $InputFile | ForEach-Object { $_ -replace ",", "|" } | ForEach-Object { $_ -replace """", "" } | Set-Content $newFilePath
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
我使用两个步骤确定新文件路径:
你的意思是找分机
ren myfile.txt myfile.txt.csv
或Dir*.txt |重命名项-newname{$\.name-替换“\.txt$”,“.csv”}
问题是您使用了原始名称,并在其末尾添加了.csv
。如果要替换扩展名,需要先从原始文件名中删除扩展名。Dir*.txt | rename item-newname{$\.name-replace'\.txt$','.txt.csv'}
然后我dir将i.txt改为.txt.csv:-?@EtanReisner这对我真的很有帮助,通过重新发布我的原始代码,它对我帮助更大,因为我知道在我的代码中添加内容的确切位置。你可以使用$csvfile.Basename
获得与[io.path]::GetFileName WithoutExtension()
@motionpotion>相同的值“替换此/这些行…”。。。。如果没有任何解释(在这种情况下),随机代码块通常是没有帮助的由于只处理扩展名为.txt
的文件,因此可以这样定义输出文件:$OutputFile=$InputFile-替换“\.txt$”,“.csv”