如何通过替换文件中存在的字符串来将文件名(基本名称而不是全名)写入同一文件。 基本上,我在一个名为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