标题: [文件操作] 求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 方法
- @echo off
- cd /d "%~dp0A\"
- setlocal enabledelayedexpansion
- set /p n=请输入每组个数:
- set /p m=请输入移动文件数:
- set /a a=-1
- set /a b=n
- set /a c=1
- for /f "delims=" %%i in ('dir /b /a-d') do (
- set /a a=a+1
- if !a! equ !b! (
- set /a b=b+n
- set /a c=c+1
- )
- if not !a! geq !m! (
- move "%%i" "%~dp0B\!c!\."
- )
- )
- endlocal
- pause
复制代码
需求2 方法
- @echo off
- cd /d "%~dp0B\"
- setlocal enabledelayedexpansion
- set /p n=请输入数量:
- set /a a=0
- for /f "delims=" %%i in ('dir /b /s /a-d') do (
- set /a a=a+1
- if !a! leq !n! (
- move "%%i" "%~dp0A\."
- )
- )
- endlocal
- pause
复制代码
和文件夹A、B放在一个目录
本人初学不久,写的代码有点笨拙...看看能不能用,使用前先测试
作者: 77七 时间: 2022-12-25 13:16
本帖最后由 77七 于 2022-12-25 13:20 编辑
需求2 方法2
“根据数量按排列顺序移动文件”
以下根据文件夹顺序移动
- @echo on
- cd /d "%~dp0B\"
- setlocal enabledelayedexpansion
- set /p n=请输入数量:
- set /a a=0
- for /f "delims=" %%i in ('dir /b /ad') do (
- pushd %%i
- for /f "delims=" %%a in ('dir /b /a-d') do (
- set /a a=a+1
- if !a! leq !n! (
- move "%%a" "%~dp0A\."
- )
- )
- popd
- )
- endlocal
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |