[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[代码合集] 批处理如何实现在文本前10个字符的头尾插入指定字符串

本帖最后由 pcl_test 于 2016-11-4 19:01 编辑

如题,如何批量处理,一个文件夹下的所有txt文件的的前20个字符的头尾插入文字或字符!


比如一个文本是开头是  "一记响亮的耳光狠狠的搧在这张令人嗔恨的脸上护士趁对方惊。。。。"    改成这样的 "<a>一记响亮的耳光狠狠的</a>搧在这张令人嗔恨的脸上护士趁对方惊。。。。"   

这样截取txt文本的前20个字符 然后头尾插入<a> </a>。


求大神给我写个批处理代码,小弟感激不尽!

本帖最后由 skynjupt 于 2013-4-26 13:05 编辑

下面的批处理只会修改本文件夹下的TXT文本(不包括子文件下的TXT文本)
  1. @echo off&chcp 936>nul&color 0A
  2. mkdir tempFile 2>nul
  3. for %%i in (*.txt) do (
  4. cd.>.\tempFile\%%~ni.temp
  5. call :subFun %%i
  6. )
  7. pushd ".\tempFile"
  8. ren *.temp *.txt 1>nul
  9. popd
  10. move /y .\tempFile\*.txt .\ 1>nul
  11. rd /q /s tempFile
  12. echo 处理完毕,按任意键结束...
  13. pause>nul&exit
  14. ::第一个参数为文件名
  15. :subFun
  16. setlocal EnableDelayedExpansion
  17. set "b=0"
  18. for /f "delims=" %%j in (%~1) do (
  19. if "%%j" neq "" (
  20. if !b! equ 0 (
  21. set "b=1"
  22. set "lines=%%j"
  23. set "line_1=!lines:~,20!"
  24. set "line_2=!lines:~19!"
  25. echo ^<a^>!line_1!^</a^>!line_2!>>.\tempFile\%~n1.temp
  26. ) else (
  27. echo %%j>>.\tempFile\%~n1.temp
  28. )
  29. )
  30. )
  31. endlocal
  32. goto :eof
复制代码

TOP

本帖最后由 xxpinqz 于 2013-4-26 13:06 编辑

你这是20字节,10字符
你到底是要前20字节呢还是前10个字符?下面是取前10字符,供参考:
  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (*.txt) do (
  3.   (set /p s=
  4.   set "p=!s:~0,10!"
  5.   for /f "delims=" %%c in ("!p!") do set "s=!s:%%c=<a>%%c</a>!"&echo,!s!
  6.   more +1
  7.   )<%%a>$%%a
  8. )
复制代码

TOP

外部 SED
  1. sed -sri "1s/.{1,20}/<a>&<\\a>/" *.txt
复制代码

TOP

回复 3# xxpinqz

您好!你的这个方法可行。但是如果我的TXT是UTF-8的,采用批处理后就会变成ANSI。造成处理后的TXT文本是乱码的!

问题已解决,感谢大家的帮助!小弟在此谢过!

TOP

回复  5#点这里iconv xiaoxiaol01

TOP

回复 5# xiaoxiaol01


    保存一个空的 utf-8 文件头为 utf.文件头,然后这样:
  1. for %%a in (*.txt) do copy /b utf.文件头+"%%a" "%%~dpna_处理%%~xa"
复制代码

TOP

返回列表