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

[文本处理] 求个批量合并文件夹下所有TXT的批处理

合并完 可以自定义在每行后加文字 每个TXT大概500行 一共10到30个txt 有重复的同行数字 需要去除

[attach]11387[/attach]

TOP

合并后是这样的效果 同行数字没有重复的 加后缀@qq.com

TOP

type *.txt>>f:\hb.txt   这是合并,加后缀用工具好弄些
有这种工具的

TOP

回复 4# rack

合并后的文件是空的  最好你能在本目录下 不用指定其他目录

TOP

本帖最后由 rack 于 2018-8-9 11:13 编辑

回复 5# 修修的想法


    type *.txt>>hb.txt
把这个命令做成BAT

要合并的txt文件与这个bat文件放一个文件夹,然后点这个BAT就可

其实你这个用品轩字典生成器可以全部完成

TOP

回复 6# rack


合并后的文件都是空的 没有内容

TOP

太简单了,大神不愿写。

TOP

回复 8# xczxczxcz
  


估计是

TOP

本帖最后由 xczxczxcz 于 2018-8-9 13:45 编辑

偶不是大神,不过这个确实简单

不考虑txt文件的排名顺序:
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. set /p 添加尾数= 输入你要在每行末尾添加的字符并回车:
  4. del /q "%~dp0合并.txt">nul 2>nul
  5. cd.>"%temp%\合并.txt"
  6. for /f "delims=" %%a in ('dir/b "*.txt"') do (
  7.       for /f "delims=" %%i in ('type "%%a"') do (
  8.       for /f "delims=" %%m in (%temp%\合并.txt) do if /i "%%i" == "%%m" set "真假=TRUE"
  9.   if /i "!真假!" neq "TRUE" echo %%i>>"%temp%\合并.txt"
  10.   set "真假="
  11. )
  12. )
  13. cd.>"%~dp0合并.txt"
  14. for /f "delims=" %%a in (%temp%\合并.txt) do echo %%a%添加尾数%>>"%~dp0合并.txt"
  15. del /q "%temp%\合并.txt"
  16. pause
复制代码
把批处理放在你的放txt的,txt文件名可以有空格
如要考虑顺序的话前面要改一改。

TOP

给你来个好点的

文件夹 文件名 都支持空格,可以随意起名。把下面命令保存为 【合并文本.cmd】即可。也可任意取。
批处理放在电脑的任意位置,把你的文件夹拖到该批处理上即可。
新方法比原来的要快些。
  1. @echo off & setlocal EnableDelayedExpansion
  2. for /f "delims=" %%a in ("%~1\..") do set "保存位置=%%~fa"
  3. del /q "%保存位置%\合并.txt">nul 2>nul
  4. cd.>"%temp%\合并.txt"
  5. set /p 添加文字= 输入你要在每行末尾添加的字符并回车:
  6. for /f "delims=" %%a in ('dir/b "%~1\*.txt"') do (
  7.       for /f "delims=" %%i in ('type "%~1\%%a"') do (
  8.       set/p=合并文本   → %%i <nul
  9.       call :LOOP %%i
  10.   if /i "!重复!" neq "TRUE" (echo. & echo %%i%添加文字%>>"%temp%\合并.txt") else echo ——重复
  11.   set "重复="
  12. )
  13. )
  14. echo.
  15. move /y "%temp%\合并.txt" "%保存位置%\"
  16. set/p=文件保存在 [%保存位置%] 目录下<nul & pause & exit
  17. :LOOP
  18. for /f "delims=" %%m in (%temp%\合并.txt) do if /i "%%i%添加文字%" == "%%m" (set "重复=TRUE" & goto :eof )
  19. goto :eof
复制代码
==================================

TOP

回复 11# xczxczxcz
  1. @echo off
  2. set "StrSuffix=@qq.com"
  3. (for %%a in (*.txt) do (
  4.     for /f "delims=" %%i in ('type "%%a"') do (
  5.         if not defined %%i (
  6.             echo,%%i%StrSuffix%
  7.             set %%i=1
  8.         )
  9.     )
  10. ))>"合并.log"
复制代码
这样可以减少一层for循环
2

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10# xczxczxcz


大神 回车无反应

TOP

回复 12# Batcher


大神  代码不知道什么错误  会把路径都带上了

TOP

回复 11# xczxczxcz

6666666666 没什么问题  就是感觉稍微有点慢

TOP

返回列表