[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 qixiaobin0715 于 2021-8-2 10:33 编辑
  1. @echo off
  2. set names=斗罗大陆
  3. setlocal enabledelayedexpansion
  4. for %%a in (%names%*.txt) do set /a n+=1
  5. (for /l %%b in (1,1,!n!) do type %names%%%b.txt)>all.txt
  6. pause
复制代码

TOP

回复 1# autoav
刚才有点小问题,已修改。要合并的文件和bat文件保存为ansi编码。

TOP

回复 4# autoav
现在也没有明白你的具体需求,要说清楚,不能只是自己明白。

TOP

回复 6# autoav
如果是A1、A2...,就改为set names=A不就行了。

TOP

你最起码要说清楚目录结构吧,是要合并的同一类文件分别在各个文件夹,还是所有文件都在一个文件夹中。

TOP

本帖最后由 qixiaobin0715 于 2021-8-2 14:54 编辑

回复 14# idwma
思路不错。但是用"tokens=1 delims=1"不妥,万一文件名中的其它地方有1的话就会出问题,修改如下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir/b *1.txt^|findstr "[^0-9]1.txt"') do (
  4.     set "str=%%~ni"
  5.     set "str=!str:~0,-1!"
  6.     for %%a in ("!str!*.txt") do set /a n+=1
  7.     (for /l %%b in (1,1,!n!) do type !str!%%b.txt)>!str!all.txt
  8.     set n=
  9. )
  10. pause
复制代码

TOP

本帖最后由 qixiaobin0715 于 2021-8-7 10:03 编辑

回复 25# autoav
你说的不错。但是有一点,这么多不同类别的文件在一起,会增加处理难度。
可以考虑这样的思路:
1.假设全部是如楼主列出的比较规范的文件名;
2.将同一类型的文件移动到同一个文件夹;
3.然后在各个文件夹中分别对文件进行规范命名;
4.分别将各文件夹中的文件合并。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1* delims=-" %%i in ('dir /b /a-d *-*.txt') do (
  4.     if not exist %%i md %%i
  5.     move "%%i-%%j" "%%i"
  6. )
  7. for /d %%k in (*) do (
  8.     pushd "%%k"
  9.     for /f "tokens=1* delims=-" %%a in ('dir /b /a-d') do (
  10.         set str=0000%%b
  11.         set str=!str:~-9!
  12.         ren "%%a-%%b" "%%a-!str!"
  13.     )
  14.     copy "%%k-*" "%%~dpk%%k.txt"
  15.     popd
  16. )
  17. pause
复制代码
以上代码未经测试。

TOP

回复 33# autoav
像这种最好传一个示范附件作为测试用,否则不好检查到底代码有无问题。

TOP

回复 33# autoav
再次检查代码,发现有一个循环语句中in和后面的括号未加空格,已修改。应当可以了。

TOP

返回列表