标题: [文本处理] 怎么用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 编辑
- echo off
- setlocal enabledelayedexpansion
- for /f "delims=*" %%a in ('dir /a-d /b *.txt') do (
-
- for /f "delims=*" %%i in ('type "%%a"') do (
- set "var=%%i"
- echo !var! | findstr /i 123 && (
- set "var=!var!0"
- )
- echo !var!!>>"%%~na.bk"
- )
- move "%%~na.bk" "%%a"
复制代码
用笨方法实现的,应该还有简单的方法,不过对于同为新人的我来说不会
作者: zaqmlp 时间: 2019-6-8 19:00
- @echo off
- set info=互助互利,支付宝扫码头像,感谢赞助
- rem 有问题,可加QQ956535081及时沟通
- title %info%
- set "folder=结果"
- cd /d "%~dp0"
- md "%folder%" 2>nul
- powershell -NoProfile -ExecutionPolicy bypass ^
- dir^|?{('.txt' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])}^|%%{^
- write-host $_.Name;^
- $text=[IO.File]::ReadAllLines($_.FullName,[Text.Encoding]::Default);^
- for($i=0;$i -lt $text.count;$i++){^
- if($text[$i].Contains('123')){$text[$i]=$text[$i]+'0';};^
- };^
- [IO.File]::WriteAllLines(('%folder%\'+$_.Name), $text, [Text.Encoding]::Default);^
- };^
- write-host '%info%' -ForegroundColor green;
- pause
复制代码
作者: Batcher 时间: 2019-6-10 14:19
回复 2# miqilaosu
这样可以提高执行效率:
1、重定向放到for循环外面
2、去掉 findstr 命令- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
- (for /f "delims=" %%i in ('type "%%a"') do (
- set "var=%%i"
- if "!var:123=!" neq "!var!" (
- set "var=!var!0"
- )
- echo !var!!
- ))>"%%~na.bk"
- move "%%~na.bk" "%%a"
- )
复制代码
作者: xczxczxcz 时间: 2019-6-10 14:42
冒个泡;- (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 |