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

[文件操作] 求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: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放在一个目录

本人初学不久,写的代码有点笨拙...看看能不能用,使用前先测试
bat小白,请多指教!谢谢!

TOP

本帖最后由 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
复制代码
bat小白,请多指教!谢谢!

TOP

返回列表