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

[文件操作] 【已解决】BAT脚本怎样成批建立文件夹并复制到新建的文件夹中?

本帖最后由 滴血雄鹰 于 2019-1-15 14:56 编辑

成批建立文件夹(指定文件夹开始文件名和建立数量),并复制到新建的文件夹中?求一段代码!

例:
在e:\0000\下成批建立指定文件名的文件夹,并将E:\9999下文件复制到建立的文件夹中。
如:运行bat后,弹出窗口:
1、建立新文件夹,并复制:
2、只建立新文件夹:

输入:1
输入新建文件夹开始文件名:输入100 回车
输入新建文件夹的数量:10 回车
然后就生成从100开始至109的文件名的文件夹。并将文件复制到新建的文件夹中。

输入:2
仅生成从100开始至109的文件名的文件夹。文件不复制。

下面代码可以实现 ,但不能指定开始文件名和新建个数,得手工改代码后,才能实现。
  1. ::步骤:
  2. ::1、先将文件放入E:\9999下。
  3. ::2、运行此批处理。
  4. @echo off
  5. color 0a
  6. title 批量文件新建中---
  7. echo ★☆★★☆★☆★☆★☆★☆★
  8. echo.★                               ★
  9. echo.★       处 理 中...          ★
  10. echo ★                              ★
  11. echo ★☆★★☆★☆★☆★☆★☆★
  12. md "e:\0000\001"
  13. md "e:\0000\002"
  14. md "e:\0000\003"
  15. md "e:\0000\004"
  16. md "e:\0000\005"
  17. md "e:\0000\006"
  18. md "e:\0000\007"
  19. md "e:\0000\008"
  20. md "e:\0000\009"
  21. md "e:\0000\010"
  22. echo 新建文件夹完成!
  23. ::批量复制文件到新建文件夹中:
  24. xcopy E:\9999 /q e:\0000\001
  25. xcopy E:\9999 /q e:\0000\002
  26. xcopy E:\9999 /q e:\0000\003
  27. xcopy E:\9999 /q e:\0000\004
  28. xcopy E:\9999 /q e:\0000\005
  29. xcopy E:\9999 /q e:\0000\006
  30. xcopy E:\9999 /q e:\0000\007
  31. xcopy E:\9999 /q e:\0000\008
  32. xcopy E:\9999 /q e:\0000\009
  33. xcopy E:\9999 /q e:\0000\010
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 8# yhcfsr


    完美解决!

TOP

本帖最后由 yhcfsr 于 2019-1-15 14:37 编辑

回复 7# 滴血雄鹰


代码已更新在5楼
QQ 33892006

TOP

本帖最后由 滴血雄鹰 于 2019-1-15 14:29 编辑

回复 5# yhcfsr

还是你先前的代码,如果再加上一条新建文件后,再删除最后一个文件夹,这样也可以实现,实在不能,我手工删除也无所谓的。也可以我如果要建10个文件夹,就输入9就行了。
因为,我复制的文件有几个,而且文件后缀不是同一类。

TOP

回复 4# 滴血雄鹰


    不要输入0开头的数字
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

已更新

本帖最后由 yhcfsr 于 2019-1-15 14:50 编辑

回复 4# 滴血雄鹰

需要注意的是:
★起始文件名不要输入005这样以0开头的数字,小于三位数字会自动补0
★不允许创建高于999的文件名
  1. @echo off
  2. ::=======用户设置区=======
  3. set "SrcDir=e:\0000"
  4. set "DstDir=E:\9999"
  5. ::========================
  6. ::=======主程序开始=======
  7. echo;【1】建新目录并复制
  8. echo;【2】只建立新文件夹
  9. choice /N /c 12
  10. if %errorlevel%==1 call :md_copy
  11. if %errorlevel%==2 call :only_md
  12. pause&exit
  13. ::=======主程序结束=======
  14. ::========函数区=========
  15. //****建新目录并复制*****
  16. :md_copy {
  17. call :only_md
  18. for /l %%a in (%start%,1,%end%) do (
  19. set "name=%%a"
  20. for %%b in ("%DstDir%\*") do (
  21. set "file=%%b"
  22. setlocal enabledelayedexpansion
  23. copy "!file!" "!SrcDir!\!name:~-3!\!name:~-3!%%~xb">nul
  24. endlocal
  25. )
  26. )
  27. exit /b
  28. }
  29. //****只建立新文件夹****
  30. :only_md {
  31. set/p "start=输入新建文件夹开始文件名:"
  32. set/p "num=输入新建文件夹的数量:"
  33. set/a "start+=1000"
  34. set/a "end=start+num-1"
  35. for /l %%a in (%start%,1,%end%) do (
  36. set "name=%%a"
  37. setlocal enabledelayedexpansion
  38. md "!SrcDir!\!name:~-3!"
  39. endlocal
  40. )
  41. exit /b
  42. }
复制代码
1

评分人数

QQ 33892006

TOP

回复 2# Batcher

输入:010
文件数:10

实际建立了8-10,3个文件夹。

TOP

本帖最后由 滴血雄鹰 于 2019-1-15 14:09 编辑

回复 3# yhcfsr

非常感谢!代码有效

能不能在复制后将文件夹内的文件命名为文件夹的名字这段代码加上?另外,代码建立的文件夹多一个,如开始005,建立10个,应该是005-014,实际建到015了。


    ::将文件夹内的文件命名为文件夹的名字。
@echo off
for /d %%a in (*) do (
for %%b in ("%%~a\*") do (
ren %%b "%%~a%%~xb"
)
)

TOP

  1. @echo off
  2. set /p Begin=输入文件夹开始文件名:
  3. set /p Num=输入文件夹的数量:
  4. for /l %%i in (%Begin%,1,%Num%) do (
  5.     md %%i
  6.     xcopy /q E:\9999 e:\0000\%%i
  7. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表