批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

[文件操作] [已解决]求一个能够按名称自动创建文件夹的bat

本帖最后由 a475012621 于 2022-5-16 16:18 编辑

目前有一个父文件夹,然后父文件夹下有很多个子文件夹,然后子当子文件夹的名称为多个(多个名称的用逗号,或者顿号、或者减号-隔开表示了),然后现在需要达到的效果是,当子文件夹的名称为多个人时,自动分成多个文件夹,以单个名称命名,然后需要把里面的内容复制到新创建的文件夹中,如果新创建的文件夹名称有重复的,在名称后面加上后缀,然后删除处理的文件,
效果图如下:

回复 1# a475012621


如果需要上传文件,可以用阿里云盘或百度网盘。

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

我帮忙写的代码不需要付钱,也不用找我要支付宝或微信账号。如果一定要给,请在群里给大家吧。

TOP

1111111111111

TOP

111111111111111

TOP

111111111111111111

TOP

设置好了,大佬,帮忙看下

TOP

本帖最后由 qixiaobin0715 于 2022-5-16 15:00 编辑

分拆前的文件夹中的文件如何处理?也需要分开吗?

TOP

本帖最后由 flashercs 于 2022-5-16 16:13 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. for /d %%A in (*) do (
  5.   set ctr=0
  6.   set t=%%~A
  7.   set "t=!t:,=,!"
  8.   set "t=!t:、=,!"
  9.   set "t=!t:-=,!"
  10.   for %%B in (!t!) do (
  11.     set /a ctr+=1
  12.     call :getNewName "%%~B"
  13.     if !ctr! equ 1 (
  14.       set firstdir=%%~B
  15.     ) else (
  16.       2>nul md !newname!
  17.       xcopy "%%A\*" !newname! /e
  18.     )
  19.   )
  20.   if !ctr! gtr 1 (
  21.     call :getNewName "!firstdir!"
  22.     ren "%%A" "!newname!"
  23.   )
  24. )
  25. endlocal
  26. pause
  27. exit /b
  28. :getNewName oldname
  29. set n=0
  30. set newname="%~1"
  31. :loop
  32. if not exist %newname% (
  33.   exit /b
  34. )
  35. set /a n+=1
  36. set newname="%~1_%n%"
  37. goto loop
  38. exit /b
复制代码
1

评分人数

微信:flashercs
QQ:49908356

TOP

回复 6# a475012621


    你这个图床有问题吧,其他人看不到图片。
【批处理在线视频分享】http://bbs.bathome.net/thread-31727-1-1.html
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html

我帮忙写的代码不需要付钱,也不用找我要支付宝或微信账号。如果一定要给,请在群里给大家吧。

TOP

代码中含有rd命令慎用,请备份好源文件。未测试:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir /b /ad *,* *-* *、* *,*') do (
  4.     set str=%%a
  5.     for %%b in (, 、 -) do set str=!str:%%b= !
  6.     for %%i in (!str!) do (
  7.         if exist %%i (
  8.             set /a _%%i+=1
  9.             md "%%i(!_%%i!)"
  10.             xcopy "%%a\*.*" "%%i(!_%%i!)\"
  11.         ) else (
  12.             md "%%i"
  13.             xcopy "%%a\*.*" "%%i\"
  14.         )
  15.     )
  16.     rd /s /q %%a
  17. )
  18. pause
复制代码

TOP

返回列表