[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 请教个文件内容替换的批处理

请教个问题:
文件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**
...

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. }
复制代码

TOP

回复 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;
复制代码
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

回复 3# xczxczxcz


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

TOP

回复 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'
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

返回列表