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


对了不知为何 合并的衔接处 第一行会有个乱码 文字

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

回复 14# 修修的想法


    我这边测试没有发现问题。把你的测试代码和测试结果发出来看看
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 19# Batcher

可以啦 可以啦  真是大神 都是编码的问题  不知为何TXT都是utf-8格式

能不能有个提前都把TXT调整成  ANSI格式的 批处理

TOP

回复 17# xczxczxcz


感谢 感谢 一个个测试了 确实是 格式的问题

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

回复 22# xczxczxcz


@echo off

for /f "delims=" %%a in ("%~1\..") do set "保存位置=%%~fa"
cd.>"%保存位置%\合并.txt"
set /p 添加文字= 输入你要在每行末尾添加的字符并回车:
for /f "delims=" %%a in ('dir/b "%~1\*.txt"') do (
   iconv -c -s -f utf-8 -t gbk "%~1\%%a">"%~1\%%a.tmp"
      for /f "delims=" %%i in ('type "%~1\%%a.tmp"') do (
              set/p=合并文本   → %%i <nul
                  if not defined %%i (echo.&echo %%i%添加文字%>>"%保存位置%\合并.txt") else echo ——重复
                  set "%%i=#"
                )
        )
echo.
del /q "%~1\*.tmp"
set/p=文件保存在 [%保存位置%] 目录下<nul & pause & exit

@echo off
setlocal enabledelayedexpansion
set filenames=0
set numbers=0
set 每个文件几个帐号=1000
set filename=1
for /f "delims=" %%a in (合并.txt) do (
        set /a numbers+=1
        set /a filenames+=1
        echo %%a>>!filename!.txt
        if !numbers! geq !每个文件几个帐号! (
                set /a filename+=1
                set numbers=0
                )
)

大神请教下 如何把这两个合并一起使用啊   我合并后没什么作用   本意就是 之前合并去重后再把这个文本按照每个1000行分成多个TXT  最好自定义命名

TOP

回复 22# xczxczxcz


你说的那个编码问题都解决  感谢

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

回复 25# xczxczxcz

  不违法 哈哈 运行后没有什么反应...

TOP

回复 26# 修修的想法

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

TOP

返回列表