powershell - 对于 CSV 中的每个名称写入每个输出文件,替换单词 00000 来命名例如 1 个输出 Henry 等等
问题描述
我正在尝试在 CSV 上使用每个(名称)来替换写在我要导出的每个文件上的(00000)。
该文件已包含单词 00000
csv 文件包含:
FullName Name LastWriteTime
\\remotecomputer\ Henry 4/30/2020 3:44:57 PM
\\remotecompter\ Magy 12/7/2020 9:04:28 PM
如果 /i "%UserName%" neq "Henry" exit,第一个 txt 应该看起来像这样 @echo off
如果 /i "%UserName%" neq "Magy" exit,第二个 txt 应该看起来像这样 @echo off
原始 Config.txt 看起来像这样 @echo off if /i "%UserName%" neq "00000" exit
代码:
$source = Read-Host -Prompt 'Insert source path'
Import-Csv C:\$source-PREP.csv | ForEach-Object {$_.Name} |ForEach-Object {Get-Content c:\Config.txt | ForEach-Object {$_ -replace '00000',"$_.Name"} |Out-File c:\$_.txt -Force}
解决方案
我想你想做:
- 读取
c:\Config.txt
包含"00000"
占位符的模板文件 - 读取一个 csv 文件
C:\Something-PREP.csv
,其中包含一个名为Name
- 使用这些名称替换
"00000"
模板中的占位符 - 输出新文件
C:\Henry.txt
等C:\Magy.txt
如果该假设是正确的,请尝试
$template = Get-Content -Path 'C:\Config.txt'
(Import-Csv -Path 'C:\Whatever-PREP.csv').Name | ForEach-Object {
# replace "00000" with the name (represented by `$_`) and use that name as filename for the output
$template -replace '"00000"', ('"{0}"' -f $_) | Set-Content -Path ('C:\{0}.txt' -f $_) -Force
}
PS 确保您正在导入的 CSV 使用逗号作为分隔符。如果这是其他字符,请添加-Delimiter '<yourCharacter>'
到 cmdlet。
推荐阅读
- python - 如何拆分文件内容以写入另一个文件?
- java - 了解 CardLayout 和面板可见性
- android - 联系人列表中的邀请选项
- vb.net - 使用比率绘制和缩放矩形
- .net - 在 C# 项目中覆盖 BuildDependsOn 时遇到问题
- machine-learning - 为什么截距参数会以意想不到的方向增加?
- docker - 即使从 BIOS 设置启用虚拟化,也无法在 Windows 10 主页上运行 Docker Toolbox
- dart - 在应用程序从内存中恢复时显示 pincode 屏幕 [使用不包含导航器的上下文请求导航器操作。]
- java - 从 csv 文件中删除记录
- r - R:带有字符串 NA 的 read.table