标题: [文件操作] [已解决]求一个能够按名称自动创建文件夹的bat [打印本页]
作者: a475012621 时间: 2022-5-16 14:43 标题: [已解决]求一个能够按名称自动创建文件夹的bat
本帖最后由 a475012621 于 2022-5-16 16:18 编辑
目前有一个父文件夹,然后父文件夹下有很多个子文件夹,然后子当子文件夹的名称为多个(多个名称的用逗号,或者顿号、或者减号-隔开表示了),然后现在需要达到的效果是,当子文件夹的名称为多个人时,自动分成多个文件夹,以单个名称命名,然后需要把里面的内容复制到新创建的文件夹中,如果新创建的文件夹名称有重复的,在名称后面加上后缀,然后删除处理的文件,
效果图如下:
作者: Batcher 时间: 2022-5-16 14:46
回复 1# a475012621
如果需要上传文件,可以用阿里云盘或百度网盘。
如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
作者: a475012621 时间: 2022-5-16 14:51
1111111111111
作者: a475012621 时间: 2022-5-16 14:51
111111111111111
作者: a475012621 时间: 2022-5-16 14:51
111111111111111111
作者: a475012621 时间: 2022-5-16 14:57
设置好了,大佬,帮忙看下
作者: qixiaobin0715 时间: 2022-5-16 14:59
本帖最后由 qixiaobin0715 于 2022-5-16 15:00 编辑
分拆前的文件夹中的文件如何处理?也需要分开吗?
作者: flashercs 时间: 2022-5-16 15:03
本帖最后由 flashercs 于 2022-5-16 16:13 编辑
- @echo off
- setlocal enabledelayedexpansion
- cd /d "%~dp0"
- for /d %%A in (*) do (
- set ctr=0
- set t=%%~A
- set "t=!t:,=,!"
- set "t=!t:、=,!"
- set "t=!t:-=,!"
- for %%B in (!t!) do (
- set /a ctr+=1
- call :getNewName "%%~B"
- if !ctr! equ 1 (
- set firstdir=%%~B
- ) else (
- 2>nul md !newname!
- xcopy "%%A\*" !newname! /e
- )
- )
- if !ctr! gtr 1 (
- call :getNewName "!firstdir!"
- ren "%%A" "!newname!"
- )
- )
- endlocal
- pause
- exit /b
- :getNewName oldname
- set n=0
- set newname="%~1"
- :loop
- if not exist %newname% (
- exit /b
- )
- set /a n+=1
- set newname="%~1_%n%"
- goto loop
- exit /b
复制代码
作者: Batcher 时间: 2022-5-16 17:51
回复 6# a475012621
你这个图床有问题吧,其他人看不到图片。
作者: qixiaobin0715 时间: 2022-5-17 17:06
代码中含有rd命令慎用,请备份好源文件。未测试:- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b /ad *,* *-* *、* *,*') do (
- set str=%%a
- for %%b in (, 、 -) do set str=!str:%%b= !
- for %%i in (!str!) do (
- if exist %%i (
- set /a _%%i+=1
- md "%%i(!_%%i!)"
- xcopy "%%a\*.*" "%%i(!_%%i!)\"
- ) else (
- md "%%i"
- xcopy "%%a\*.*" "%%i\"
- )
- )
- rd /s /q %%a
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |