标题: [代码合集] 批处理如何实现在文本前10个字符的头尾插入指定字符串 [打印本页]
作者: xiaoxiaol01 时间: 2013-4-26 11:14 标题: 批处理如何实现在文本前10个字符的头尾插入指定字符串
本帖最后由 pcl_test 于 2016-11-4 19:01 编辑
如题,如何批量处理,一个文件夹下的所有txt文件的的前20个字符的头尾插入文字或字符!
比如一个文本是开头是 "一记响亮的耳光狠狠的搧在这张令人嗔恨的脸上护士趁对方惊。。。。" 改成这样的 "<a>一记响亮的耳光狠狠的</a>搧在这张令人嗔恨的脸上护士趁对方惊。。。。"
这样截取txt文本的前20个字符 然后头尾插入<a> </a>。
求大神给我写个批处理代码,小弟感激不尽!
作者: skynjupt 时间: 2013-4-26 12:57
本帖最后由 skynjupt 于 2013-4-26 13:05 编辑
下面的批处理只会修改本文件夹下的TXT文本(不包括子文件下的TXT文本)- @echo off&chcp 936>nul&color 0A
-
- mkdir tempFile 2>nul
-
- for %%i in (*.txt) do (
- cd.>.\tempFile\%%~ni.temp
- call :subFun %%i
- )
-
- pushd ".\tempFile"
- ren *.temp *.txt 1>nul
- popd
-
- move /y .\tempFile\*.txt .\ 1>nul
- rd /q /s tempFile
-
- echo 处理完毕,按任意键结束...
- pause>nul&exit
-
- ::第一个参数为文件名
- :subFun
- setlocal EnableDelayedExpansion
- set "b=0"
- for /f "delims=" %%j in (%~1) do (
- if "%%j" neq "" (
- if !b! equ 0 (
- set "b=1"
- set "lines=%%j"
- set "line_1=!lines:~,20!"
- set "line_2=!lines:~19!"
- echo ^<a^>!line_1!^</a^>!line_2!>>.\tempFile\%~n1.temp
- ) else (
- echo %%j>>.\tempFile\%~n1.temp
- )
- )
- )
- endlocal
- goto :eof
复制代码
作者: xxpinqz 时间: 2013-4-26 13:00
本帖最后由 xxpinqz 于 2013-4-26 13:06 编辑
你这是20字节,10字符
你到底是要前20字节呢还是前10个字符?下面是取前10字符,供参考:- @echo off&setlocal enabledelayedexpansion
- for %%a in (*.txt) do (
- (set /p s=
- set "p=!s:~0,10!"
- for /f "delims=" %%c in ("!p!") do set "s=!s:%%c=<a>%%c</a>!"&echo,!s!
- more +1
- )<%%a>$%%a
- )
复制代码
作者: terse 时间: 2013-4-26 13:43
外部 SED- sed -sri "1s/.{1,20}/<a>&<\\a>/" *.txt
复制代码
作者: xiaoxiaol01 时间: 2013-4-26 15:31
回复 3# xxpinqz
您好!你的这个方法可行。但是如果我的TXT是UTF-8的,采用批处理后就会变成ANSI。造成处理后的TXT文本是乱码的!
问题已解决,感谢大家的帮助!小弟在此谢过!
作者: xxpinqz 时间: 2013-4-26 22:39
回复 5#点这里iconv xiaoxiaol01
作者: CrLf 时间: 2013-4-27 00:58
回复 5# xiaoxiaol01
保存一个空的 utf-8 文件头为 utf.文件头,然后这样:- for %%a in (*.txt) do copy /b utf.文件头+"%%a" "%%~dpna_处理%%~xa"
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |