【问题标题】:Add string in csv file via windows batchscript通过 Windows 批处理脚本在 csv 文件中添加字符串
【发布时间】:2019-02-17 19:33:45
【问题描述】:

我有一个管道分隔的 csv 文件,如下所示

METADATA|WorkTerms|PeriodOfServiceId
MERGER|WorkTerms|WT10127
METADATA|Assignment|WorkTermsAssignmentId|PeriodOfServiceId
MERGER|Assignment|WT10127|WR10127

我想要一个像下面这样的输出

METADATA|WorkTerms|PeriodOfServiceId(SourceSystemId)
MERGER|WorkTerms|WT10127
METADATA|Assignment|WorkTermsAssignmentId(SourceSystemId)|PeriodOfServiceId(SourceSystemId)
MERGER|Assignment|WT10127|WR10127

我想在特定位置添加(SourceSystemId),可以通过windows批处理脚本来完成吗?

任何线索、链接建议都会很有帮助。

谢谢,

湿婆

【问题讨论】:

  • 如果不将文件重新写入临时文件,然后删除并重命名,则无法使用批处理内联编辑文件。我建议你宁愿使用 powershell。
  • 如果我们可以编辑文件并重命名并将其放在其他文件夹中,是否可以完成?我没有任何问题,除非我通过将其写入临时文件来添加包含此数据的文件。请分享如何继续进行此操作?
  • 你能告诉我怎么做吗?
  • 谢谢,期待!!
  • 请让我们在这里清理一些 cmets。

标签: csv batch-file batch-processing


【解决方案1】:

首先,仅将第 4 行的 myfile.csv 的名称替换为 your csv 文件的名称和第 3 行的文件路径。 . 如果您要替换的字符串是唯一的字符串,请不要触摸脚本中的任何其他内容。将脚本与您的文件放在同一目录中:

@echo off
setlocal enabledelayedexpansion
set "mypath=C:\PATH\TO\CSV"
set "mycsv=myfile.csv"
move "%mypath%\%mycsv%" "%mypath%\oldmyfile.txt"

for /f "delims=" %%i in ('type "%mypath%\oldfile.txt"') do (
    set "str=%%i"
    set "edit=!str:PeriodOfServiceId=PeriodOfServiceId(SourceSystemId)!"
    set "edit=!edit:WorkTermsAssignmentId=WorkTermsAssignmentId(SourceSystemId)!"
    echo !edit! >> "%mypath%\%mycsv%"
)
del "%mypath%\oldfile.txt" /Q

这就是脚本的作用。将原始文件重命名为 oldfile.txt,键入每一行并使其成为变量,替换某些字段,但与搜索字符串不匹配的字段将保持原样,然后它将这些行回显到原始文件包括替换的名称。

【讨论】:

  • 谢谢伙计,它工作得很好,如果我想将批处理文件保存在其他目录中,它将如何工作?我试过像 "%mycsv%" "C:\users\shivam\Desktop\Taleo Files Folder\oldmyfile.txt" 但这没有用..
  • 是的,如果您想将其保存在另一个目录中,可以这样做。我将编辑该示例以适应这种情况。
  • 已编辑,请看第 3 行和第 4 行,仅更改第 3 行的路径和第 4 行的文件名。
  • 如果路径有空格,这还能用吗?我的给出了找不到的错误
  • 双引号会为您处理,请确保您复制的代码与现在完全相同。
猜你喜欢
  • 1970-01-01
  • 2021-07-05
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
相关资源
最近更新 更多