返回列表 发帖
本帖最后由 aloha20200628 于 2024-8-15 13:52 编辑

回复 3# haichuan5121

以下批处代码仅处理当前目录下文件名未含 04T 的文本文件,假设其扩展名为 .rcp
其中包含 C0_E0,1,0,0 或者 C0_E0,2,0,0 的字段均被置换为  C0_E0,3,0,1
新文件名=源文件名.new.rcp
  1. @echo off &for /f "delims=" %%F in ('dir /b/a-d *rcp^|findstr /irvc:"04t" ') do (
  2.       powershell "(gc '%%F') -replace 'C0_E0,\d,0,0', 'C0_E0,3,0,1' ">"%%~nF.new%%~xF"
  3. )
  4. pause&exit/b
复制代码
再让ps代劳一步...
  1. @echo off & powershell "dir *.rcp -exclude '*04T*'|%%{((gc $_.name) -replace 'C0_E0,\d,0,0', 'C0_E0,3,0,1')|sc ($_.basename+'.new.rcp')}"
  2. pause&exit/b
复制代码

TOP

本帖最后由 aloha20200628 于 2024-8-15 13:40 编辑

回复 16# haichuan5121

一。订正了7楼代码 〉将C0_E0,1,0,0或C0_E0,2,0,0替换为C0_E0,3,0,1
二。根据楼主的新要求再给一个版本如下,存为 test.bat 运行 〉将连续两个C0_E0,3,0,1分别置换为指定参数,其命令行用法:
   test 2,1
   或
   test 2,2
   或
   test 2,3
   ... 等不同参数组合 ...
  1. @echo off &setlocal &if "%~2"=="" exit/b
  2. set "v1=_C0_E0,%~1,0,0,"
  3. if "%~2"=="3" (set "v2=_C0_E0,%~2,0,1,") else (set "v2=_C0_E0,%~2,0,0,")
  4. powershell "dir *.rcp -exclude '*04T*'|%%{ $s=(gc $_.name); [regex]$p='_C0_E0,\d,0,\d,'; $s=$p.replace($s, '%v1%', 1); $s=$p.replace($s, '%v2%', 1); sc ($_.basename+'.new.rcp') $s }"
  5. endlocal&pause&exit/b
复制代码
1

评分人数

TOP

本帖最后由 aloha20200628 于 2024-8-15 15:46 编辑

回复 20# aloha20200628

给一个调用 powershell 低版本也能可靠运行的代码...
命令行的参数组合用法如同20楼说明
  1. @echo off &setlocal &if "%~2"=="" exit/b
  2. if "%~1"=="3" (set "v1=_C0_E0,3,0,1,") else (set "v1=_C0_E0,%~1,0,0,")
  3. if "%~2"=="3" (set "v2=_C0_E0,3,0,1,") else (set "v2=_C0_E0,%~2,0,0,")
  4. powershell "dir *.rcp -exclude '*04T*'|%%{ $s=(gc -raw $_.name); $p=($s -replace '_C0_E0,\d,0,\d,', '◆').split('◆'); $s=$p[0]+'%v1%'+$p[1]+'%v2%'+$p[2]; sc ($_.basename+'.new.rcp') $s.trim() }"
  5. endlocal&pause&exit/b
复制代码

TOP

返回列表