找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 81583|回复: 21

[文本处理] 批处理如何批量调换txt两列的位置,如调换第一列与第三列的位置?

[复制链接]
发表于 2015-1-11 13:02:34 | 显示全部楼层 |阅读模式
好多txt文件,怎么批量调换两列的位置,如调换第一列与第三列的位置。
发表于 2015-1-11 13:40:39 | 显示全部楼层
如果固定有n列就好处理
 楼主| 发表于 2015-1-11 13:49:46 | 显示全部楼层
回复 2# mms0536


    列数都是相同且固定的。
发表于 2015-1-11 14:47:02 | 显示全部楼层
本帖最后由 apang 于 2015-1-11 15:38 编辑
  1. sed -i -r "s/^\s*(\S+)(\s+\S+\s+)(\S+)/\3\2\1/" *.txt
复制代码
sed 自行搜索下载
 楼主| 发表于 2015-1-11 15:52:03 | 显示全部楼层
回复 4# apang


   找不到64位系统兼容的sed。有别的方法吗?bat之类的
发表于 2015-1-11 16:41:55 | 显示全部楼层
回复 5# nihaoareyou
  1. @echo off
  2. mkdir ok_dir
  3. for /r "txt所在目录" %%i in (*.txt) do (
  4. for /f "tokens=1,2,3 delims= " %%a in (%%i) do (
  5. call :del_str %%a %%b %%c %%i
  6. )
  7. )
  8. :del_dir
  9. echo %3 %2 %1 >.\ok_dir\%~n3.txt
  10. )
复制代码
发表于 2015-1-11 16:42:25 | 显示全部楼层
回复 5# nihaoareyou

咋感觉你就是翻来覆去那几个问题啊......
你找一个写好的代码搞懂你自己就会了
 楼主| 发表于 2015-1-11 16:58:19 | 显示全部楼层
回复 7# mms0536


    两个问题是有点相似,bat一点没接触,很多字符和语句都不明白什么意思,见谅哈。
 楼主| 发表于 2015-1-11 17:05:58 | 显示全部楼层
回复 6# mms0536


    这个运行后,输出的txt显示ECHO处于关闭状态。
发表于 2015-1-11 17:34:38 | 显示全部楼层
本帖最后由 mms0536 于 2015-1-11 17:41 编辑

回复 9# nihaoareyou
  1. @echo off
  2. mkdir ok_dir
  3. for /r "txt所在目录" %%i in (*.txt) do (
  4. for /f "usebackq tokens=1,2,3 delims= " %%a in ("%%i") do (
  5. call :del_str %%a %%b %%c %%i
  6. )
  7. )
  8. :del_str
  9. echo %3 %2 %1 >.\ok_dir\%~n3.txt
  10. )
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 乐于助人

查看全部评分

发表于 2015-1-11 17:44:33 | 显示全部楼层
回复 5# nihaoareyou


这里有可以用的版本:
http://bbs.bathome.net/thread-3981-1-1.html
发表于 2015-1-11 17:49:20 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b *.txt') do (
  3.     gawk "{s=$1;$1=$3;$3=s;print}" "%%i" > "%%i.new"
  4.     move /y "%%i.new" "%%i"
  5. )
复制代码
发表于 2015-1-11 20:43:43 | 显示全部楼层
  1. @set @n=0;//&dir /b *.txt|cscript -nologo -e:jscript "%~0" & pause & exit/b

  2. fso = new ActiveXObject("Scripting.FileSystemObject");
  3. while (!WScript.StdIn.AtEndOfStream) {
  4.         file = WScript.StdIn.ReadLine();
  5.         f = fso.OpenTextFile(file, 1);
  6.         txt = f.ReadAll();
  7.         f.Close();
  8.         txt = txt.replace(/(\S+)(\s+\S+\s+)(\S+)(.*)$/mg, "$3$2$1$4");
  9.         f = fso.OpenTextFile(file, 2);
  10.         f.Write(txt);
  11.         f.close(); f = null
  12. }
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-1-11 22:55:35 | 显示全部楼层
回复 13# apang


    这个具体怎么操作呢?是和bat一样的运行吗?
 楼主| 发表于 2015-1-11 23:00:27 | 显示全部楼层
回复 12# DAIC


    这个有点问题,运行之后所有txt都成空白了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 21:36 , Processed in 0.020466 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表