Board logo

标题: [文件操作] 请教个文件内容替换的批处理 [打印本页]

作者: fish509008    时间: 2021-12-4 22:03     标题: 请教个文件内容替换的批处理

请教个问题:
文件a.txt内容如下:
S1,R1
S2,R2
S3,R3
...
文件pro程序.c内容如下:
...
**S1**
**S1**
**S3**
**S1**
**S1**
...
现在想把文件pro程序.c中的所有的S1替换为R1(如果有的话),S2替换为R2(如果有的话),...
结果文件pro程序new.c如下:
...
**R1**
**R1**
**R3**
**R1**
**R1**
...
作者: for_flr    时间: 2021-12-9 14:40

powershell
  1. $hash=@{}
  2. gc a.txt|%{
  3. $s=$_.split(",")[0]
  4. $r=$_.split(",")[1]
  5. $hash.$s=$r
  6. }
  7. gc c.txt|%{
  8. $kw=$_.split("*")[3]
  9. $_.replace($kw,$hash.$kw) >>new.txt
  10. }
复制代码

作者: xczxczxcz    时间: 2021-12-9 16:58

回复 2# for_flr

这样应该更简单
  1. $c=gc '.\c.txt' -Raw
  2. (gc '.\a.txt').Foreach{
  3. $t=$_.split(',',2);
  4. $c=[regex]::Replace($c, $t[0], $t[1]);
  5. }
  6. sc '.\c_new.log' -Value $c -Force;
复制代码

作者: for_flr    时间: 2021-12-9 17:09

回复 3# xczxczxcz


    谢谢指导,我用的2.0,还没有-row参数。我想问下.split(",",2)这里面的2是指定切分成两段吗,为啥不省略掉。(新手,不确定是不是,问一下稳妥点。)
作者: xczxczxcz    时间: 2021-12-9 17:16

回复 4# for_flr


    一、没有 RAW 可以 : -join "`n";  win7需要 -join "`r`n"
   二、'a,b,c,d'.split(',')  = 'a','b','c','d';   'a,b,c,d'.split(',',2)='a','b,c,d'




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2