Board logo

标题: [文件操作] [已解决]批处理怎样把文本文件合并到一个文件夹? [打印本页]

作者: swanseabrian    时间: 2021-10-12 12:55     标题: [已解决]批处理怎样把文本文件合并到一个文件夹?

本帖最后由 swanseabrian 于 2021-10-28 11:51 编辑

在一个文件夹里面1000个txt文本,那么通过命令设置两个txt文本归一个文件夹。那么总共有500个文件夹

可不可以自己设置合并的个数,

也就是设置成3个文本合并到一个文件夹,

或者4,5,6个合并到一个文件夹呢
作者: qixiaobin0715    时间: 2021-10-12 13:25

回复 1# swanseabrian
牵涉到算法问题,是这意思吗:
  1. @echo off
  2. ::设置合并文本数量
  3. set a=2
  4. setlocal enabledelayedexpansion
  5. for %%a in (*.txt) do (
  6.     set /a n+=1
  7.     set /a m=(n+a-1^)/a
  8.     if not exist 分组!m! md 分组!m!
  9.     copy "%%a" "分组!m!"
  10. )
  11. pause
复制代码

作者: swanseabrian    时间: 2021-10-12 19:36

回复 2# qixiaobin0715


    请问这是啥意思
m=(n+a-1^)/a
看 不懂呢
作者: Batcher    时间: 2021-10-12 22:02

回复 1# swanseabrian


我来一个不需要算法的,你试试能否看懂:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. REM 设置合并文本数量
  5. set x=2
  6. set FolderNum=1001
  7. set FileNum=0
  8. for %%i in (*.txt) do (
  9.     if not exist "!FolderNum!" (
  10.         md "!FolderNum!"
  11.     )
  12.     move /y "%%i" "!FolderNum!"
  13.     set /a FileNum+=1
  14.     if !FileNum! equ !x! (
  15.         set /a FolderNum+=1
  16.         set FileNum=0
  17.     )
  18. )
复制代码

作者: qixiaobin0715    时间: 2021-10-13 09:14

回复 3# swanseabrian
不知你是指表达式本身,还是最后的数值?
作者: swanseabrian    时间: 2021-10-13 10:43

回复 4# Batcher


    你这个可以看懂,不过用算法的,真简单,看着
如何 设置文件夹,从001-200呢,就是从001开始,计数
作者: swanseabrian    时间: 2021-10-13 10:45

回复 5# qixiaobin0715


    a-1^
这个是啥
作者: qixiaobin0715    时间: 2021-10-13 10:55

本帖最后由 qixiaobin0715 于 2021-10-13 11:10 编辑

回复 7# swanseabrian
有括号的复合语句中变量设置时,含有括号的需转义,否则会出错。
作者: qixiaobin0715    时间: 2021-10-13 12:21

本帖最后由 qixiaobin0715 于 2021-10-13 12:30 编辑

上面的情况可用下面两组代码试试:
示范1
  1. @echo off
  2. echo,()
  3. (
  4. echo,()
  5. )
  6. pause
复制代码
括号外没问题。
————————————————
示范2
  1. @echo off
  2. (
  3. echo,(^)
  4. )
  5. pause
复制代码

作者: Batcher    时间: 2021-10-13 12:38

回复 6# swanseabrian
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. REM 设置合并文本数量
  5. set x=2
  6. set FolderNum=1001
  7. set FileNum=0
  8. for %%i in (*.txt) do (
  9.     if not exist "!FolderNum:~1!" (
  10.         md "!FolderNum:~1!"
  11.     )
  12.     move /y "%%i" "!FolderNum:~1!"
  13.     set /a FileNum+=1
  14.     if !FileNum! equ !x! (
  15.         set /a FolderNum+=1
  16.         set FileNum=0
  17.     )
  18. )
复制代码





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