如何通過替換文件中存在的字符串來將文件名(基本名稱而不是全名)寫入同一文件。 基本上,我在一個名爲C:\ Downloads \ PreValidation的文件夾中有一堆.psf文件。用文件名替換字符串的Powershell腳本
- 我想每個文件更改爲.csv格式和
- ,而這樣做,所以我想,以取代被稱爲「太空計劃項目」目前 裏面的文件名的文件的記錄,一個沒有串 擴展名。
這是我試圖運行腳本 -
foreach($file in (dir C:\Downloads\PreValidation\*.psf)){
$fromdir = "C:\Downloads\Prevalidation\*.psf"
$fullname = gi $fromdir| select fullname
$b = $fullname[0]
$b.fullname
Copy-Item $file.fullname C:\Downloads\Validation\WIP\psaload1.csv
Get-Content C:\Downloads\Validation\WIP\psaload.csv | ForEach-Object {$_.replace("Space Planning Project","$b.fullname")} | Set-Content C:\Downloads\Validation\WIP\psaload.csv
}
但它的示數出來說
Get-Content : Cannot find path 'C:\Downloads\Validation\WIP\psaload.csv' because it does not exist.
At C:\cap_sps\powershell\testfilename.ps1:7 char:12
+ Get-Content <<<< C:\Downloads\Validation\WIP\psaload.csv | ForEach-Object {$_.replace("Space Planning Project","$b.fullname")} | Set-Content C:\Downloads\Validation\WIP\psaload.csv
+ CategoryInfo : ObjectNotFound: (C:\Downloads\Validation\WIP\psaload.csv:String) [Get-Content], ItemNotF
oundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand
請注意,我用我的最終psaload.csv加載到一個Oracle數據庫,並在我的腳本的最後一步,我將刪除此文件,以便我可以在循環中運行相同的命令,以查看上面文件夾中存在的其他.psf文件。
任何幫助深表謝意。
謝謝, 桑德斯。
感謝Manoj--這是一種魅力。由於我的sqlloader希望加載名爲psaload.csv的文件,因此我只是將Set-Content中的文件名更改爲psaload.csv。這裏是我的基於你的代碼 - gci C:\ Downloads \ PreValidation \ *。psf | %{ $ file = $ _ gc $ file.fullname | %{$ _ -replace「Space Planning Project」,$ file.BaseName} | Set-Content「C:\ Downloads \ Validation \ WIP \ psaload.csv」 cmd.exe/k C:\ CAP_SPS \ Batchscripts \ runfixloader.bat 刪除項目C:\ Downloads \ Validation \ WIP \ psaload.csv } – user982201 2012-01-30 20:15:43