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

[文件操作] 批处理如何将目录下(含子目录)的文件随机10个移动到另一目录(保持原目录结构)?

如题,E盘《图片》目录下,有《A》《B》《C》。。。等子目录,每个目录中均有数量不等的jpg图片,且所有的jpg图片不重名,想实现的功能:
运行一次批处理,就在《图片》目录下所有子目录中,随机挑选总数10个文件,移动到E盘《已选择图片》目录下,并保持相应目录结构(如,原来文件路径是E:\图片\A\A01.jpg,移动之后是E:\已选择图片\A\A01.jpg;原来文件路径是E:\图片\C\C01.jpg,移动之后是E:\已选择图片\C\C01.jpg,等等),同时,复制A01.jpg、C01.jpg...等等文件到E盘《随机选的文件》这个目录下(复制的10个文件全部在这个目录下,不要路径)。
感谢热心关注,期待指教。

本帖最后由 happy886rr 于 2016-3-16 12:33 编辑

回复 1# youngway
批处理放在E:\图片\    然后执行,没时间测试,自己测吧。
还有你的目录名真的都带书名号吗?
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /a-d /b /s "*.jpg"') do ( set /a N+=1)
  4. for /f "delims=" %%i in ('dir /a-d /b /s "*.jpg"') do (
  5. set /a RN=!random!%%!N!+1
  6. if not defined #!RN! (set "#!RN!=%%i")
  7. )
  8. for /f "tokens=2 delims==" %%i in ('set #') do (
  9. xcopy "%%i" "E:\已选择图片%%~pi"
  10. copy "%%i" "E:\随机选的文件\"
  11. del /f /q "%%i"
  12. set /a i+=1
  13. if !i! equ 10 (goto end)
  14. )
  15. :end
  16. echo 执行完毕!
  17. pause>nul
复制代码

TOP

目录名怎么可能带书名号,只是为了直观,把目录名统一起来,便于阅读。
感谢回复,现在试试。

TOP

测试通过。共50个文件夹,9300多个文件,总计22G大小。执行过程大约2分钟,其间命令行窗口黑屏,不知道能否加上进度。另外,很明显几个相同目录的文件被拷贝出来,是因为这几个目录中的文件占多数吗?
感谢,初步结贴。

TOP

二楼的方法完美解决了我的问题,请收下我的膝盖。
如果能有直观的进度条,请不吝赐教,如果没有,无伤大碍。不影响使用。
再次感谢!

TOP

回复 4# youngway
差不多,就是按哪个目录文件多,优先拷贝的,我又改了我的代码见楼上。这回拷贝过的图片会被强制删除。如果你真的需要删除可以试试新改的。
要求不能苛刻。因为有的文件夹万一只有一个图片,那他就会只出现一次,这是我无法改变的。图多自然出现的多。

TOP

回复 6# happy886rr
修改过后的只是确保删除命令执行,我没发现别的改动,是吗?
这批处理的原理是不是把所有目录下的所有文件当作一个合集,在其中随机找出10个文件来?如果是的话就符合预期,至于出现的几率、先后,交给随机吧。
万分感谢!

TOP

回复 7# youngway

TOP

这东东的实例,是历年来的照片,全放在电脑上了,想着一天选出10张,用作手机的屏保。
如果我的这些文件放在百度网盘(或别的盘,或者邮箱,或者网络空间),目录结构类似,除了上面的批处理(这个是在电脑本机上执行的),还有别的办法每天选出10张,下载到本地,或者直接在网络空间的某处,单独存放吗?

TOP

回复 2# happy886rr 这里有个类似的批量该怎么编写呢http://www.bathome.net/viewthrea ... mp;extra=#pid195364   求解答,谢谢

TOP

返回列表