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

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

回复 16# 修修的想法

乱码一般是你的TXT文件不是ANSI编码的。 偶测试没问题,没有乱码。

现用 版主优化的。用not defined 代替 for 遍列循环。
  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.   if not defined %%i (echo.&echo %%i%添加文字%>>"%temp%\合并.txt") else echo ——重复
  10.   set "%%i=#"
  11. )
  12. )
  13. echo.
  14. move /y "%temp%\合并.txt" "%保存位置%\"
  15. set/p=文件保存在 [%保存位置%] 目录下<nul & pause & exit
复制代码
偶测试 速度嗖嗖的。
1

评分人数

TOP

回复 12# Batcher

用 defined 代替 loop那个 for 循环后,速度快了好多。

TOP

回复  xczxczxcz


感谢 感谢 一个个测试了 确实是 格式的问题
修修的想法 发表于 2018-8-10 18:49
  1. @echo off
  2. for /f "delims=" %%a in ("%~1\..") do set "保存位置=%%~fa"
  3. cd.>"%保存位置%\合并.txt"
  4. set /p 添加文字= 输入你要在每行末尾添加的字符并回车:
  5. for /f "delims=" %%a in ('dir/b "%~1\*.txt"') do (
  6.    iconv -c -s -f utf-8 -t gbk "%~1\%%a">"%~1\%%a.tmp"
  7.       for /f "delims=" %%i in ('type "%~1\%%a.tmp"') do (
  8.       set/p=合并文本   → %%i <nul
  9.   if not defined %%i (echo.&echo %%i%添加文字%>>"%保存位置%\合并.txt") else echo ——重复
  10.   set "%%i=#"
  11. )
  12. )
  13. echo.
  14. del /q "%~1\*.tmp"
  15. set/p=文件保存在 [%保存位置%] 目录下<nul & pause & exit
复制代码
这个带了转码的。到官网下载 iconv.exe 或在本坛下载 win_iconv.exe 放到 系统 system32目录下。或与批处理放在一起。
1

评分人数

TOP

回复 24# 修修的想法

不要用于违法活动。虽然偶很少用 qq
  1. @echo off
  2. for /f "delims=" %%a in ("%~1\..") do set "保存位置=%%~fa"
  3. cd.>"%保存位置%\合并.txt"
  4. set /p 添加文字= 输入你要在每行末尾添加的字符并回车:
  5. for /f "delims=" %%a in ('dir/b "%~1\*.txt"') do (
  6.    iconv -c -s -f utf-8 -t gbk "%~1\%%a">"%~1\%%a.tmp"
  7.       for /f "delims=" %%i in ('type "%~1\%%a.tmp"') do (
  8.       set/p=合并文本   → %%i <nul
  9.   if not defined %%i (echo.&echo %%i%添加文字%>>"%保存位置%\合并.txt") else echo ——重复
  10.   set "%%i=#"
  11. )
  12. )
  13. echo.
  14. del /q "%~1\*.tmp"
  15. setlocal EnableDelayedExpansion
  16. set/a file+=1
  17. for /f "delims=" %%a in (%保存位置%\合并.txt) do (
  18.   set/a number+=1
  19.   if !number! LEQ 1 set/p var=请输入第 !file! 文本的名称,回车继续:
  20.   if !number! LEQ 1000 echo %%a>>!var!.txt
  21.   if !number! EQU 1000 (set/a number=0 & set/a file+=1)
  22.   )
  23. Endlocal
  24. pause & exit
复制代码

TOP

回复 26# 修修的想法

把你要处理的那个文件夹拖上来,是一起处理的。不是单个运行的。

TOP

返回列表