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

[文本处理] 批处理文本内容倒序

文件夹内的txt文档
采用批处理的方法使文件夹内的每个txt文档内容都倒序排版

比如之前一个txt文档内容是
123456789
批处理后变成987654321忽略空行

把生成新的txt至newtxt文件夹
有创新,多创新;无创新,多模仿;无模仿,多坚持

字符串倒序还是文本倒序?

TOP

本帖最后由 apang 于 2012-4-25 23:41 编辑

如果只是字符串倒序
  1. @echo off
  2. md "newtxt" 2>nul
  3. for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
  4.   (for /f "usebackq delims=" %%b in ("%%a") do (
  5.     set "str=%%b"
  6.     setlocal enabledelayedexpansion
  7.     call :lp
  8.     endlocal
  9.   ))>"newtxt\%%a"
  10. )
  11. goto :eof
  12. :lp
  13. if not "!str!"=="" set str1=!str1!!str:~-1!&set "str=!str:~,-1!"&goto lp
  14. echo;!str1!&set str1=
复制代码

TOP

本帖最后由 apang 于 2012-4-25 23:42 编辑

字符串、文本倒序
  1. @echo off
  2. md "newtxt" 2>nul
  3. for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
  4.   (for /f "tokens=1* delims=:" %%b in ('findstr /n .* "%%a"^|sort /r') do (
  5.     set "str=%%c"
  6.     setlocal enabledelayedexpansion
  7.     call :lp
  8.     endlocal
  9.   ))>"newtxt\%%a"
  10. )
  11. goto :eof
  12. :lp
  13. if not "!str!"=="" set str1=!str1!!str:~-1!&set "str=!str:~,-1!"&goto lp
  14. echo;!str1!&set str1=
复制代码

TOP

回复 2# lxzzr


    你好版主,就是txt文档里面的所有文字倒序
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

bat太好玩了,只要有规律的就可以实现是吗
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

回复 4# apang


    你好,回复晚了!见谅!
字符串倒序和文本倒序有什么区别啊?我运行下来好像一样的结果!
顺便问下,可以排除文章内的指定字不被倒序批处理吗吗?

比如文章内出现  批处理之家 和 bathome
让批处理之家 和 bathome 跳过不被倒序!

谢谢您
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

回复 7# fanfande

文本倒序就是,比如你的文本有20行,将最后一行(第20行)放到第一行,第19行放到第二行,以此类推。
#4楼代码有BUG,文本超过10行就不行了。。。

TOP

  1. @echo off
  2. for /f "delims=" %%a in ('sort /+4096 a.txt') do (
  3.    set line=%%a
  4.    set $=%%a#
  5.    set len=-1
  6.    setlocal enabledelayedexpansion
  7.    for %%a in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1)do (
  8.       if !$:~%%a^,1!. NEQ . set/a len+=%%a&set $=!$:~%%a!
  9.    )
  10.    rem 二分回溯法判断字符串长度,为避免 call 降低效率,将函数内置
  11.    set "str="
  12.    for /l %%a in (!len! -1 0) do set str=!str!!line:~%%a,1!
  13.    echo !str!
  14.    rem 字符串倒序
  15.    endlocal
  16. )
  17. pause
复制代码

TOP

回复 8# apang


原来是这样啊→文本倒序就是行下面的行滚到上面去是吧
    上尉你好,可以给出完整的代码吗
谢谢
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

  1. tac a.txt >b.txt
复制代码

TOP

回复 11# gawk


    你好,对同一文件夹内的文本进行批处理
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

回复 12# fanfande
  1. @echo off
  2. for %%a in (*.txt) do (
  3.     tac %%a >%%~na.log
  4. )
复制代码

TOP

返回列表