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

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

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

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

回复 31# 545810831


    你好,这个还是对a.txt单个文件的处理!
请问如何批处理特定目录下的txt文件呢并将新的结果输出到新的文件夹
谢谢你
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3. set /a m+=1
  4. set _!m!=%%i
  5. )
  6. set nn=0
  7. set mm=-1
  8. :sta
  9. set /a nn+=2
  10. set /a mm+=2
  11. if defined _%nn% echo.!_%nn%!
  12. if defined _%mm% echo.!_%mm%!
  13. if !nn! lss !m! goto sta
  14. pause  
复制代码

TOP

回复 28# awk


   
您上面这个还是仅仅处理a.txt然后把结果输出到新的文件夹以result.txt
假如是用这个批处理一个文件夹里面的所有txt,然后将各自的处理结果输出到新的文件夹内,如何写呢?
我用for /f "delims=" %%I in ('*.txt') do ( 不行,没成功,我在死板硬套,
谢谢你哦!
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

回复 26# FOR


    假如是用这个批处理一个文件夹里面的所有txt,然后将各自的处理结果输出到新的文件夹内,如何写呢?谢谢你哦!
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

回复 27# fanfande
  1. @echo off&setlocal enabledelayedexpansion
  2. md new
  3. set n=&set odd=
  4. (for /f "delims=" %%i in (a.txt) do (
  5.   set/a n+=1,m=n%%2
  6.   if !m! equ 1 (set "odd=%%i") else echo,%%i&echo,!odd!
  7. ))>new\result.txt
  8. if %m% equ 1 echo,%odd% >>new\result.txt
复制代码

TOP

回复 15# weichenxiehou


    你好我想请教你一个问题
假如是用这个批处理一个文件夹里面的所有txt,然后将处理结果输出到新的文件夹

@echo off&setlocal enabledelayedexpansion
set n=&set odd=
(for /f "delims=" %%i in (dir /a-d/b *.txt') do (
  set/a n+=1,m=n%%2
  if !m! equ 1 (set "odd=%%i") else echo,%%i&echo,!odd!
))md new
if %m% equ 1 echo,%odd% >>new.txt

这样好像不行,将他们的结果输出到新的文件夹如何表示的
1

评分人数

    • CrLf: 请将超过一行的代码用 code 括起来PB -2
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

  1. gawk "{if(getline s)print s;print}" a.txt
复制代码

TOP

  1. sed -r "N;s/(.*)\n(.*)/\2\n\1/" test.txt
复制代码

TOP

回复 23# hankerer
理解得八九不离十吧……
看得多说得多,远比不上写得多。

TOP

回复  hankerer
试试下面的就应该懂了。。
weichenxiehou 发表于 2011-9-14 18:15



    感谢。我的理解是所有的set /p 操作都保存在缓存里,最后由a.txt一次性输入。每行正好有一个回车换行来模拟输入。不知道理解的对不对。

TOP

回复 21# hankerer
试试下面的就应该懂了。。
  1. @echo off
  2. for /l %%i in (1 1 10) do echo,%%i>>a.txt
  3. type a.txt
  4. (for /l %%i in (1 1 10) do set/p _a%%i=)<a.txt
  5. set _a
  6. pause>nul
复制代码
看得多说得多,远比不上写得多。

TOP

不好意思,手快没考虑清楚...应该是:如果要修改多个文本,改一下就行了:findstr 确实是为了兼容空行,但是 ...
CrLf 发表于 2011-9-14 11:00



    可以成功运行。
但如果存在空行就会出错。

版主能说明一下运行的原理吗?

set /p a=<a.txt 这样子不是只有第一行会赋给变显吗?

TOP

不好意思,手快没考虑清楚...应该是:如果要修改多个文本,改一下就行了:findstr 确实是为了兼容空行,但是 ...
CrLf 发表于 2011-9-14 11:00



    测试了一下,好像运行错误!找不到文件,我是放在一个文件夹内运行的
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP


多谢各位鼎力相助!
来日慢慢图报!
有创新,多创新;无创新,多模仿;无模仿,多坚持

TOP

返回列表