找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19023|回复: 4

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

[复制链接]
发表于 2022-5-4 04:12:33 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码
发表于 2022-5-4 07:21:52 | 显示全部楼层
  1. (Get-Content $file1 -ReadCount 0)-replace'FORX +\*','FORX*'-replace' *([\[\]|,]) *','$1'|Set-Content $file2
复制代码
 楼主| 发表于 2022-5-4 09:13:06 | 显示全部楼层
本帖最后由 smss 于 2022-5-4 10:47 编辑

回复 2# flashercs
"[ "空格是之后不是之前
[]中的|要过滤 能改改吗
发表于 2022-5-4 16:50:48 | 显示全部楼层
  1. -replace'FORX +\*','FORX*'-replace'\[ +','['-replace' +\]',']'-replace'(\[[^]]*\])| +(?=\|)|(?<=\|) +','$1'-replace', +',','
复制代码

评分

参与人数 1技术 +1 收起 理由
smss + 1 可以

查看全部评分

 楼主| 发表于 2022-5-4 23:21:14 | 显示全部楼层
回复 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不熟担心出错 还请教老师
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 02:09 , Processed in 0.020029 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表