Board logo

标题: [文本处理] [已解决]有没有办法批处理合并两个文本中的部分信息啊, [打印本页]

作者: asdbb    时间: 2015-3-27 13:16     标题: [已解决]有没有办法批处理合并两个文本中的部分信息啊,

本帖最后由 asdbb 于 2015-6-30 11:10 编辑

如题求助啊,有两个文档,合并成一个新文档,但是两个文档中只提取部分资料,文档行中用逗号分开的。
作者: pcl_test    时间: 2015-3-27 13:44

回复 1# asdbb

新手提问必读
http://www.bathome.net/thread-13187-1-1.html
http://www.bathome.net/thread-9959-1-1.html
http://www.bathome.net/thread-7690-1-1.html
作者: asdbb    时间: 2015-3-27 13:55

本帖最后由 asdbb 于 2015-3-27 14:02 编辑

文件一
101112345676,00000,1,1234567891012344,,9876543210123456,00000,1
101112345677,00000,1,1234567891012345,,9876543210123456,00000,1
文件2 名字111.txt
111.111.1112,1234567891,1234567891123456,
111.111.1112,1234567892,1234567891123457,
生成文件
1234567891,1234567891123456,00000,1,文件2的文件名111,101112345676,1234567891012344,,9876543210123456,00000,1
1234567892,1234567891123457,00000,1,文件2的文件名111,101112345677,1234567891012344,,9876543210123456,00000,1
作者: Batcher    时间: 2015-3-27 14:20

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "FileA=1.txt"
  4. set "FileB=111.txt"
  5. set "FileC=临时.txt"
  6. set "FileD=结果.txt"
  7. (for /f "delims=" %%i in (%FileA%) do (
  8.     set /p str=
  9.     echo !str!%%i
  10. ))<%FileB% >%FileC%
  11. set "FileBname=%FileB:~0,-4%"
  12. (for /f "tokens=2-11 delims=," %%a in (%FileC%) do (
  13.     echo %%a,%%b,%%d,%%e,%FileBname%,%%c,%%f,,%%g,%%h,%%i
  14. ))>%FileD%
复制代码

作者: asdbb    时间: 2015-3-27 14:29

可以生成啊,谢谢,还有个要是生成结果第一行我要加上些字符如何处理,还有就是那两个文档的第一行有字符但是不需要生成到文档中如何处理???非常感谢版主
作者: Batcher    时间: 2015-3-27 14:31

回复 5# asdbb
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "FileA=1.txt"
  4. set "FileB=111.txt"
  5. set "FileC=临时.txt"
  6. set "FileD=结果.txt"
  7. (for /f "delims=" %%i in (%FileA%) do (
  8.     set /p str=
  9.     echo !str!%%i
  10. ))<%FileB% >%FileC%
  11. set "FileBname=%FileB:~0,-4%"
  12. >%FileD% echo 我要加上些字符
  13. (for /f "skip=1 tokens=2-11 delims=," %%a in (%FileC%) do (
  14.     echo %%a,%%b,%%d,%%e,%FileBname%,%%c,%%f,,%%g,%%h,%%i
  15. ))>>%FileD%
复制代码

作者: asdbb    时间: 2015-3-27 14:36

本帖最后由 asdbb 于 2015-3-27 15:01 编辑

文件一
字符串
101112345676,00000,1,1234567891012344,,9876543210123456,00000,1
101112345677,00000,1,1234567891012345,,9876543210123456,00000,1
字符11111
文件2 名字111.txt
字符串
111.111.1112,1234567891,1234567891123456,
111.111.1112,1234567892,1234567891123457,
生成文件
我要加上些字符
1234567891,1234567891123456,00000,1,文件2的文件名111,101112345676,1234567891012344,,9876543210123456,00000,1
1234567892,1234567891123457,00000,1,文件2的文件名111,101112345677,1234567891012344,,9876543210123456,00000,1
还有些小问题,文件一的最后字符能否删除?原始文件文件一多一行的
作者: Batcher    时间: 2015-3-27 15:16

回复 7# asdbb
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "FileA=1.txt"
  4. set "FileB=111.txt"
  5. set "FileC=临时.txt"
  6. set "FileD=结果.txt"
  7. (for /f "delims=" %%i in (%FileB%) do (
  8.     set /p str=
  9.     echo %%i!str!
  10. ))<%FileA% >%FileC%
  11. set "FileBname=%FileB:~0,-4%"
  12. >%FileD% echo 我要加上些字符
  13. (for /f "skip=1 tokens=2-11 delims=," %%a in (%FileC%) do (
  14.     echo %%a,%%b,%%d,%%e,%FileBname%,%%c,%%f,,%%g,%%h,%%i
  15. ))>>%FileD%
复制代码

作者: asdbb    时间: 2015-3-27 15:18

可以满足现有需求,以后得学习这个BAT啊
作者: pcl_test    时间: 2015-3-28 15:42

回复 9# asdbb
问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
作者: yiwuyun    时间: 2015-3-28 23:03

  1. if ($true){}# == ($true){}# goto ___yiwuyun
  2. <#
  3. :___yiwuyun
  4. @echo off&setlocal&cls
  5. (echo $strPath="%~dp0"&type "%~f0")|powershell -command -
  6. pause
  7. exit/b 0
  8. #>
  9. $file1="1.txt";$file2="111.txt";
  10. $file2BaseName=(gi ($strPath+$file2)).BaseName;
  11. $f1c=gc ($strPath+$file1);
  12. $f2c=gc ($strPath+$file2);
  13. "我要加上些字符";
  14. for($i=0;$i -lt $f1c.count;$i++){
  15.   $temp1=$f1c[$i] -split ",";
  16.   $temp2=$f2c[$i] -split ",";
  17.   $temp2[1]+","+$temp2[2]+","+$temp1[1]+","+$temp1[2]+","+$file2BaseName+","+$temp1[0]+","+$temp1[3]+","+$temp1[4]+","+$temp1[5]+","+$temp1[6]+","+$temp1[7];
  18. }
复制代码
我去,命令行竟然可以直接无视执行策略。浪费表情了。
作者: asdbb    时间: 2015-6-30 11:12

你这个是什么啊,怎么看不懂啊
作者: DAIC    时间: 2015-6-30 11:16

回复 12# asdbb


11楼的代码保存成 test.bat 执行看看
原理是用BAT生成一段代码交给PowerShell去执行
作者: asdbb    时间: 2015-6-30 14:06

回复 13# DAIC


    谢谢!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2