Board logo

标题: [文本处理] 【已解决】批处理如何分别提取多个txt文本开头的前几个字符写入/输出到新的文本里 [打印本页]

作者: 鱼丸粗面    时间: 2016-9-20 17:08     标题: 【已解决】批处理如何分别提取多个txt文本开头的前几个字符写入/输出到新的文本里

现在有一个excel表格存放在    D:\数据存放\数据存放地址.xlsx     用于存放.txt文本的地址,如图:

现在想把每个输入文档1.txt、2.txt、3.txt..........的前10个字符提取出来,分别存放在新的文档1_new.txt、2_new.txt、3_new.txt..........中,并在每个输出文档末尾添加回车。

比如:
输入文档为:
文本1.txt文件内容为
1111111111111111111111111111111111111111111111111111111111
文本2.txt文件内容为
2222222222222222222222222222222222222222222222222222222222
文本3.txt文件内容为
3333333333333333333333333333333333333333333333333333333333
....................

希望输出文档为:
1_new.txt内容为
1111111111
(注:该处有回车)

2_new.txt内容为
2222222222
(注:该处有回车)
....................

谢谢!!
作者: 鱼丸粗面    时间: 2016-9-20 17:18

希望大神帮帮忙,谢谢大家了!
作者: pcl_test    时间: 2016-9-20 20:31

本帖最后由 pcl_test 于 2016-9-20 23:20 编辑

新建一个“文件列表.txt”,将excel表格B列列出的txt文本路径一行一个复制粘贴到“文件列表.txt”里
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('type "文件列表.txt"') do (
  3.     (set /p line=<"%%a"
  4.     echo;!line:~,10!)>"New_%%~nxa"
  5. )
  6. pause
复制代码
  1. rem 第三方http://www.bathome.net/s/tool/index.html?key=gawk
  2. gawk "{fn=$0;sub(/^.+\\/,\"\",fn);getline<$0;print substr($0,1,10)>\"New_\"fn}" "文件列表.txt"
  3. pause
复制代码
  1. powershell -c "gc '文件列表.txt'|%%{$fn='New_'+[System.IO.Path]::GetFileName($_);(gc $_)[0][0..9] -join ''|out-file $fn}"
  2. pause
复制代码
  1. //&cls&cscript -nologo -e:jscript "%~f0"<"文件列表.txt"&pause&exit
  2. var fso = new ActiveXObject('Scripting.FileSystemObject');
  3. while(!WSH.StdIn.AtEndOfStream){
  4.     var line = WSH.StdIn.ReadLine();
  5.     try{
  6.         var text = fso.OpenTextFile(line, 1).ReadLine();
  7.         fso.CreateTextFile('New_'+line.replace(/^.+\\/, ''), 2).WriteLine(text.substr(0,10));
  8.     }catch(e){WSH.echo(line+'文件为空或不存在')};
  9. }
复制代码





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