Board logo

标题: [文本处理] 怎么用bat批量处理在某指定字符后面加个0或者其他字符 [打印本页]

作者: q5221336    时间: 2019-6-8 14:32     标题: 怎么用bat批量处理在某指定字符后面加个0或者其他字符

怎么用bat批量处理在某指定字符后面加个0或者其他字符
例如文本里面,有123这几个字符
处理前
123 a
1234 b
123456 c
1564fd
处理后结果
123 a0
1234 b0
123456 c0
1564fd
没有123这个几个字符的话,就不处理,保留原样

有哪位大神帮帮忙吗.感谢!!
作者: miqilaosu    时间: 2019-6-8 16:19

本帖最后由 miqilaosu 于 2019-6-8 16:32 编辑
  1. echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=*" %%a in ('dir /a-d /b *.txt') do (
  4. for /f "delims=*" %%i in ('type "%%a"') do (
  5. set "var=%%i"
  6. echo !var! | findstr /i 123 && (
  7. set "var=!var!0"
  8. )
  9. echo !var!!>>"%%~na.bk"
  10. )
  11. move "%%~na.bk" "%%a"
复制代码
用笨方法实现的,应该还有简单的方法,不过对于同为新人的我来说不会
作者: zaqmlp    时间: 2019-6-8 19:00

  1. @echo off
  2. set info=互助互利,支付宝扫码头像,感谢赞助
  3. rem 有问题,可加QQ956535081及时沟通
  4. title %info%
  5. set "folder=结果"
  6. cd /d "%~dp0"
  7. md "%folder%" 2>nul
  8. powershell -NoProfile -ExecutionPolicy bypass ^
  9.     dir^|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])}^|%%{^
  10.         write-host $_.Name;^
  11.         $text=[IO.File]::ReadAllLines($_.FullName,[Text.Encoding]::Default);^
  12.         for($i=0;$i -lt $text.count;$i++){^
  13.             if($text[$i].Contains('123')){$text[$i]=$text[$i]+'0';};^
  14.         };^
  15.         [IO.File]::WriteAllLines(('%folder%\'+$_.Name), $text, [Text.Encoding]::Default);^
  16.     };^
  17.     write-host '%info%' -ForegroundColor green;
  18. pause
复制代码

作者: Batcher    时间: 2019-6-10 14:19

回复 2# miqilaosu


这样可以提高执行效率:
1、重定向放到for循环外面
2、去掉 findstr 命令
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
  4.     (for /f "delims=" %%i in ('type "%%a"') do (
  5.         set "var=%%i"
  6.         if "!var:123=!" neq "!var!" (
  7.             set "var=!var!0"
  8.         )
  9.         echo !var!!
  10.     ))>"%%~na.bk"
  11.     move "%%~na.bk" "%%a"
  12. )
复制代码

作者: xczxczxcz    时间: 2019-6-10 14:42

冒个泡;
  1. (gc 0.txt) -replace '(?<n>^123.*$)','${n}0'|sc 0.txt
复制代码
偶在整 24 节气的 交节时刻 程序。 看了网上的 JAVA程序 在计算太阳黄金交角总是有错误。不知哪位大神有资料?
作者: miqilaosu    时间: 2019-6-10 14:48

回复 4# Batcher


    之前没想到还可以用截取替换的方法,又学了一招




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