我想用PowerShell读取一些CSV文件,然后使用不同的分隔符将它们保存在同一位置:
$content = (import-csv -path $filepath -Encoding utf8 -Delimiter ",")
write-host $(& ..\DLLs\Handle\handle.exe $filepath)
remove-item $filepath
export-csv ...
我在删除文件步骤时失败了。 我已按照PowerShell unlock/unload imported CSV中的建议添加了handle.exe调试信息,它确实显示powershell_ise.exe仍然具有该文件的句柄。当脚本完成后,我可以按照自己的意愿删除或重命名。
如何解决这个问题?
答案 0 :(得分:1)
尝试省略 Remove-Item
cmdlet,因为它可能没有必要。 Import-CSV
cmdlet不应该锁定文件,我无法重现该文件。但是,您可以尝试使用Get-Content
来读取文件并将其传递到ConvertFrom-Csv
cmdlet(注意:您不需要明确指定逗号分隔CSV的分隔符):
$content = Get-Content $filepath -raw | ConvertFrom-Csv
答案 1 :(得分:1)
我现在明白了。我的特殊设置,那部分,我省略了,因为我认为没有必要,是罪魁祸首。
以上代码在管道中运行,其中一部分是在文件中搜索某个文本
ls *.csv | select-string "someText" | % { do the CSV Stuff }
然后锁定的是select-string命令,而不是import-csv。