找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25041|回复: 9

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

[复制链接]
发表于 2022-5-16 14:43:29 | 显示全部楼层 |阅读模式
本帖最后由 a475012621 于 2022-5-16 16:18 编辑

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

发表于 2022-5-16 14:46:30 | 显示全部楼层
回复 1# a475012621


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

如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
 楼主| 发表于 2022-5-16 14:51:43 | 显示全部楼层
1111111111111
 楼主| 发表于 2022-5-16 14:51:48 | 显示全部楼层
111111111111111
 楼主| 发表于 2022-5-16 14:51:51 | 显示全部楼层
111111111111111111
 楼主| 发表于 2022-5-16 14:57:26 | 显示全部楼层
设置好了,大佬,帮忙看下
发表于 2022-5-16 14:59:18 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2022-5-16 15:00 编辑

分拆前的文件夹中的文件如何处理?也需要分开吗?
发表于 2022-5-16 15:03:19 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
a475012621 + 1 顶顶顶!!!!

查看全部评分

发表于 2022-5-16 17:51:44 | 显示全部楼层
回复 6# a475012621


    你这个图床有问题吧,其他人看不到图片。
发表于 2022-5-17 17:06:51 | 显示全部楼层
代码中含有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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 23:34 , Processed in 0.029931 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表