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

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

好多txt文件,怎么批量调换两列的位置,如调换第一列与第三列的位置。

回复 19# nihaoareyou
  1. @echo off
  2. for %%i in (*txt) do (
  3.     for /f "usebackq delims=" %%a in ("%%i") do (
  4.         call :a %%a
  5.     )
  6.     move /y $β "%%~fsi" >nul 2>nul
  7. )
  8. pause&exit
  9. :a
  10. (echo,%3 %2 %1) >>$β
  11. goto :eof
复制代码
这个对当前文件夹下的所有文件有效。
1

评分人数

    • CrLf: 乐于助人技术 + 1
踏实一些点.不要着急.你想要的时间都会给你.2

TOP

回复 20# terse


    问题终于解决了,谢大神!点赞

TOP

回复 19# nihaoareyou
运行前 先备份
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  3.     (for /f "usebackqtokens=1-3*" %%a in ("%%i") do (
  4.          echo %%c %%b %%a %%e
  5.     ))>"%temp%\$"
  6.     move "%temp%\$" "%%i"
  7. )
  8. pause
复制代码
1

评分人数

    • CrLf: 乐于助人技术 + 1

TOP

回复 18# 慕夜蓝化


    大神,在帮我改改哈?这个只能修改一个文件的,而且文件名称也变了。我想批量修改很多个txt,而且名称和原来的保持一致。

TOP

  1. @echo off
  2. for /f "delims=" %%i in (1.txt) do (
  3.         call :a %%i
  4. )
  5. pause&exit
  6. :a
  7. (echo,%3 %2 %1) >>2.txt
  8. goto :eof
复制代码
这里测试的是将一列和三列互换的,只要不含有一些特殊的字符分隔符,默认以空格为分隔符,你可以试一下。
踏实一些点.不要着急.你想要的时间都会给你.2

TOP

回复 15# nihaoareyou


    你有 gawk.exe 吗?没有的话下载一个吧

TOP

回复 10# mms0536


    这个只能调换一个txt的,也就是说处理后的文件夹中只有一个txt,而且这个txt的名称也被改为原来第三列的第一个字符串了。

TOP

回复 12# DAIC


    这个有点问题,运行之后所有txt都成空白了。

TOP

回复 13# apang


    这个具体怎么操作呢?是和bat一样的运行吗?

TOP

  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

评分人数

    • CrLf: 乐于助人技术 + 1

TOP

  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. )
复制代码

TOP

回复 5# nihaoareyou


这里有可以用的版本:
http://bbs.bathome.net/thread-3981-1-1.html

TOP

本帖最后由 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

评分人数

    • CrLf: 乐于助人技术 + 1

TOP

回复 6# mms0536


    这个运行后,输出的txt显示ECHO处于关闭状态。

TOP

返回列表