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

[文本处理] 批处理怎样将目录下的所有文本文件内的文本相邻奇偶行互换?

比方说原来的排行:1,2,3,4,5,6,7,8
处理后的记过排行:2,1,4,3,6,5,8,7

相邻奇偶行互换
有创新,多创新;无创新,多模仿;无模仿,多坚持

你这不是奇偶列互换吗,怎么说是行呢?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher
他说的那些数字应该是指的行号吧……
看得多说得多,远比不上写得多。

TOP

回复  Batcher
他说的那些数字应该是指的行号吧……
weichenxiehou 发表于 2011-9-14 08:17


(⊙v⊙)嗯,用的是notepad2,那些数字是文本前面的行号~
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

本帖最后由 weichenxiehou 于 2011-9-14 09:33 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=&set odd=
  3. (for /f "delims=" %%i in (a.txt) do (
  4.   set/a n+=1,m=n%%2
  5.   if !m! equ 1 (set "odd=%%i") else echo,%%i&echo,!odd!
  6. ))>new.txt
  7. if %m% equ 1 echo,%odd%>>new.txt
复制代码
仅提供了自己想的思路,没去特意注意特殊字符的处理。。
看得多说得多,远比不上写得多。

TOP

回复 5# weichenxiehou


如果一个文件只有3行数字,这个代码会丢掉最后一行。比如:
1
2
3

TOP

本帖最后由 weichenxiehou 于 2011-9-14 08:54 编辑

回复 6# awk
不会吧?我最后一行代码特意注意这个问题啊……
看得多说得多,远比不上写得多。

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f %%a in ('findstr /n .* a.txt') do (
  3.    setlocal
  4.    set /p a=
  5.    set /p b=
  6.    echo !b!&echo !a!
  7.    endlocal
  8. )<a.txt
复制代码

TOP

回复 7# weichenxiehou


你自己试试呢,echo,%odd%>>new.txt这个不能把数字3写到文件里面吧?

TOP

回复 5# weichenxiehou


    可以把最后一行放到整个语块之内,用变量延迟输出变量,这样能省一个重定向

TOP

回复 10# CrLf
ok,多谢提醒,0-9的数字被当成句柄了,代码已修改,加了个空格,应该可以吧。
看得多说得多,远比不上写得多。

TOP

回复 8# CrLf
不知版主是否会错题意,怎么跑你的程序,结果不对呢?
看得多说得多,远比不上写得多。

TOP

回复 9# awk
还是得感谢awk纠错,多谢!
看得多说得多,远比不上写得多。

TOP

回复 7# weichenxiehou


    有个小建议,不要在原文的基础上改代码,这样会有一部分人不明白9L是什么意思的!
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

回复 14# wc726842270
言之有理,原楼代码还原,新代码贴于此:
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=&set odd=
  3. (for /f "delims=" %%i in (a.txt) do (
  4.   set/a n+=1,m=n%%2
  5.   if !m! equ 1 (set "odd=%%i") else echo,%%i&echo,!odd!
  6. ))>new.txt
  7. if %m% equ 1 echo,%odd% >>new.txt
复制代码
看得多说得多,远比不上写得多。

TOP

返回列表