Board logo

标题: [文本处理] [已解决]用PowerShell替换字符写入变量循环执行? [打印本页]

作者: smss    时间: 2022-5-4 04:12     标题: [已解决]用PowerShell替换字符写入变量循环执行?

本帖最后由 smss 于 2022-5-4 22:31 编辑

用PS脚本 抛砖引玉 期待大神
  1. $file1 = '1.wcs';  #修改前的文件
  2. $file2 = '2.wcs';  #修改后的文件
  3. (Get-Content $file1) | ForEach-Object {   
  4.     $_.replace('FORX *', 'FORX* ').replace('[ ', '[').replace(' ]', ']')
  5. } | Set-Content $file2
  6. (Get-Content $file2) | ForEach-Object {   
  7.     $_.replace('| EXEC', '|EXEC').replace(', EXEC', ',EXEC').replace('| EXIT', '|EXIT').replace(', EXIT', ',EXIT').replace('| CALL', '|CALL') #写的蹩脚 能写成变量循环执行吗
  8. } | Set-Content $file2
复制代码
1.wcs
  1. TEAM set a=1 | set b=2
  2. FIND [ %a%=1 | %b%=2 ], mess 1
  3. FORX * 1 2 3, i, TEAM set X=%i% | ENVI Y=%i%
  4. LABE ,L160T267W88H15,注册注销Dll
复制代码
希望得到 注意第4条这种不用替换
  1. TEAM set a=1|set b=2
  2. FIND [%a%=1 | %b%=2],mess 1
  3. FORX* 1 2 3,i,TEAM set X=%i%|ENVI Y=%i%
  4. LABE ,L160T267W88H15,注册注销Dll
复制代码

作者: flashercs    时间: 2022-5-4 07:21

  1. (Get-Content $file1 -ReadCount 0)-replace'FORX +\*','FORX*'-replace' *([\[\]|,]) *','$1'|Set-Content $file2
复制代码

作者: smss    时间: 2022-5-4 09:13

本帖最后由 smss 于 2022-5-4 10:47 编辑

回复 2# flashercs
"[ "空格是之后不是之前
[]中的|要过滤 能改改吗
作者: flashercs    时间: 2022-5-4 16:50

  1. -replace'FORX +\*','FORX*'-replace'\[ +','['-replace' +\]',']'-replace'(\[[^]]*\])| +(?=\|)|(?<=\|) +','$1'-replace', +',','
复制代码

作者: smss    时间: 2022-5-4 23:21

回复 4# flashercs 变量中含有,  不修改
ENVI Z=CO., LTD
set X=CO., LTD1
FIND %a%=1, mess 1 ! mess 2改为FIND %a%=1, mess 1!mess 2
虽然加了-replace'! +','!'-replace' !','!'对PS不熟担心出错 还请教老师




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