【发布时间】:2012-01-30 19:25:02
【问题描述】:
如何通过替换文件中存在的字符串将文件名(基本名而不是全名)写入同一个文件。 基本上,我在一个名为 C:\Downloads\PreValidation 的文件夹中有一堆 .psf 文件。
- 我想将每个文件更改为 .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 文件循环运行相同的命令存在于上述文件夹中。
非常感谢任何帮助。
谢谢, 桑德斯。
【问题讨论】:
标签: powershell filenames file-rename