Powershell - 将文件名写入同一文件

时间:2014-11-04 09:33:17

标签: powershell

我有很多.csv文件,我想把文件名写到同一个文件中,在最后一个位置的末尾。

例如在C:\ CSV中我有:

  • P0_0050569F52981EE39CEF8C857147E850.csv

  • P0_0050569F52981EE39CEF8D4825092850.csv

  • P0_0050569F52981EE39CEF8EE13B954850.csv

... 以及另外一千多个这些文件

在每个文件中我都有一些内容:

  • P0_0050569F52981EE39CEF8C857147E850.csv = 365013; 253; 9001

我想将此转换为365013;253;9001

  • 365013; 253; 9001;

  • P0_0050569F52981EE39CEF8C857147E850.csv

我找不到错误......

Get-ChildItem -Filter "*.csv" -Path "C:\CSV" -Recurse | % {

#Open file
$reader = New-Object System.IO.StreamReader $_.FullName

#Ignore first line
$reader.ReadLine() | out-null

#Get name
$filename = $filename

#Write  
Add-Content ";" $filename

#Close stream
$reader.Close()

}

2 个答案:

答案 0 :(得分:0)

这将在每个CSV的末尾发生文件名。

Get-ChildItem -Filter "*.csv" -Path "C:\CSV" -Recurse | % {

    (";"+"`r`n"+$_.name) | Out-File -FilePath $_.fullname -Append
}

答案 1 :(得分:0)

MickyB的选择应该有效。这是另一种方法:

Get-ChildItem -Filter "*.csv" -Path "C:\CSV" -Recurse | foreach {$contents = get-content $_.fullname; $contents +=";"+"`r`n"+$_.name; Set-Content $_.fullname -Value $contents }