Board logo

标题: [文件操作] 求BAT脚本批量转移文件的功能 [打印本页]

作者: blueline    时间: 2022-12-25 08:10     标题: 求BAT脚本批量转移文件的功能

现有文件夹A:“文件分配”,另有文件文件夹B,其下有:”1“”2“”3“”4“”5“……等子文件夹

需求一:文件夹A中有N个文件,需要将文件以设定好的数量逐个移动分配到文件夹B下的1、2、3、4……等子文件夹中。

如:文件夹A中有100个文件,如果设定2个文件为一组分配,程序就自动执行按顺序将100个文件以2个文件为一组,分别移动分配到50个子文件夹内。如果设定5个文件为一组,则分别移动分配到20个子文件夹内。

需求二:反向操作,将各子文件夹下的文件汇总合并至文件夹A。

PS:文件夹A中的文件是不确定的,没有固定名称及格式,移动时需要只识别数量,根据数量按排列顺序移动文件。

有劳各位技术大拿如何实现?
作者: 77七    时间: 2022-12-25 12:40

本帖最后由 77七 于 2022-12-25 12:59 编辑

需求1 方法
  1. @echo off
  2. cd /d "%~dp0A\"
  3. setlocal enabledelayedexpansion
  4. set /p n=请输入每组个数:
  5. set /p m=请输入移动文件数:
  6. set /a a=-1
  7. set /a b=n
  8. set /a c=1
  9. for /f "delims=" %%i in ('dir /b /a-d') do (
  10.     set /a a=a+1
  11.     if !a! equ !b! (
  12.         set /a b=b+n
  13.         set /a c=c+1
  14.     )
  15.     if not !a! geq !m! (
  16.         move "%%i" "%~dp0B\!c!\."
  17.     )
  18. )
  19. endlocal
  20. pause
复制代码


需求2 方法
  1. @echo off
  2. cd /d "%~dp0B\"
  3. setlocal enabledelayedexpansion
  4. set /p n=请输入数量:
  5. set /a a=0
  6. for /f "delims=" %%i in ('dir /b /s /a-d') do (
  7.     set /a a=a+1
  8.     if !a! leq !n! (
  9.         move "%%i" "%~dp0A\."
  10.     )
  11. )
  12. endlocal
  13. pause
复制代码

和文件夹A、B放在一个目录

本人初学不久,写的代码有点笨拙...看看能不能用,使用前先测试

作者: 77七    时间: 2022-12-25 13:16

本帖最后由 77七 于 2022-12-25 13:20 编辑

需求2 方法2
“根据数量按排列顺序移动文件”
以下根据文件夹顺序移动
  1. @echo on
  2. cd /d "%~dp0B\"
  3. setlocal enabledelayedexpansion
  4. set /p n=请输入数量:
  5. set /a a=0
  6. for /f "delims=" %%i in ('dir /b /ad') do (
  7.     pushd %%i
  8.     for /f "delims=" %%a in ('dir /b /a-d') do (
  9.         set /a a=a+1
  10.         if !a! leq !n! (
  11.             move "%%a" "%~dp0A\."
  12.         )
  13.     )
  14.     popd
  15. )
  16. endlocal
  17. pause
复制代码





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