标题: [文件操作] 求助批处理移动文件夹并命名,删除文件夹 [打印本页]
作者: 455027852 时间: 2024-9-4 15:20 标题: 求助批处理移动文件夹并命名,删除文件夹
链接:https://pan.baidu.com/s/1NiVZA8NGSbrhSX89mJNY7Q
提取码:iy99
将文件夹下所有的的目录文件夹(包含里边图片)剪切出,放到指定文件夹下并以上几级文件夹组合命名。
将村级和户级文件夹删除,两文件夹内的图片或文件夹放一起。
表达的可能有点乱,其实不复杂,只是写不出来。。。
作者: qixiaobin0715 时间: 2024-9-4 16:08
备份好源文件,以免发生意外:- @echo off
- setlocal enabledelayedexpansion
- md temp
- for /f "delims=" %%i in ('dir /s /ad /b 目录') do (
- set "DI=%%i"
- set "DI=!DI:*%cd%=!"
- set "DI=temp\!DI:\=!\"
- md "!DI!"
- move "%%i\*.*" "!DI!"
- rd "%%i"
- )
- ren temp 目录
- for /f "delims=" %%i in ('dir /s /ad /b 村级 户级') do (
- move "%%i\*.*" "%%i\.."
- rd "%%i"
- )
- pause
复制代码
作者: 455027852 时间: 2024-9-4 16:23
回复 2# qixiaobin0715
提示两个找不到文件,新建了一个“鐩 綍”文件夹。
作者: qixiaobin0715 时间: 2024-9-4 16:26
将批处理文件保存为ANSI编码,放到原始文件夹下运行。
作者: 455027852 时间: 2024-9-4 16:33
回复 4# qixiaobin0715
牛啊,大神。示例可以用了,我研究研究原理。
作者: ppll2030 时间: 2024-9-4 17:01
本帖最后由 ppll2030 于 2024-9-4 17:19 编辑
回复 1# 455027852
把代码保存为ANSI编码的bat文件
放在原始文件夹下,与各城市文件夹放一块。
运行即可得到结果。- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /s /ad *目录') do (
- set fd=%%i
- md "目录" 2>nul
- for %%d in ("!fd!\..") do set str=%%~pnxd&set str=!str:%~p0=!&set str=!str:\=!
- move "%%i" ".\目录\!str!目录" >nul
- )
-
- for /f "delims=" %%i in ('dir /b /s /ad *村级 *户级') do (
- set fd=%%i
- for %%d in ("!fd!\..") do set "fdd=%%~dpnxd"
- move "!fd!\*.png" "!fdd!\" >nul
- rd "%%i"
- )
- pause
复制代码
作者: 455027852 时间: 2024-9-4 17:58
回复 6# ppll2030
如果村级,户级下面还有文件夹,该如何修改?
作者: ppll2030 时间: 2024-9-4 19:04
本帖最后由 ppll2030 于 2024-9-4 19:09 编辑
回复 7# 455027852
想怎么改?要什么要的结果?
还是要连带下面的文件夹一起删除的话。就加个参数 /s /q 就可以了
作者: 77七 时间: 2024-9-4 22:01
回复 7# 455027852
- @echo off
- rem 保存为ansi
- cd /d "%~dp0"
- for /d %%d in (*) do (
- if "%%d" neq "目录" (
- for /d %%e in ("%%d\*") do (
- for /d %%f in ("%%e\*") do (
- md "目录\%%d%%~nxe%%~nxf目录"
- for /f "delims=" %%i in ('dir /b /s /a-d "%%f\目录"') do (
- move "%%i" "目录\%%d%%~nxe%%~nxf目录\"
- )
- for /f "delims=" %%i in ('dir /b /s /a-d "%%f"') do (
- move "%%i" "%%f\"
- )
- for /f "delims=" %%i in ('dir /b /s /ad "%%f" ^| sort /r') do (
- rd "%%i"
- )
- )
- )
- )
- )
- pause
复制代码
作者: 455027852 时间: 2024-9-5 09:03
回复 8# ppll2030
村级内含文件夹1,2,3户级内含文件夹4,5,6,保留文件夹1,2,3,4,5,6,仅删除村级户级这两个文件夹
作者: qixiaobin0715 时间: 2024-9-5 09:29
本帖最后由 qixiaobin0715 于 2024-9-5 09:50 编辑
回复 10# 455027852
表达不明确。1-6这些文件夹放在哪里呢?
只能猜猜看了,是这样?- @echo off
- setlocal enabledelayedexpansion
- md temp
- for /f "delims=" %%i in ('dir /s /ad /b 目录') do (
- set "DI=%%i"
- set "DI=!DI:*%cd%=!"
- set "DI=temp\!DI:\=!\"
- md "!DI!"
- move "%%i\*.*" "!DI!"
- rd "%%i"
- )
- ren temp 目录
- for /f "delims=" %%i in ('dir /s /ad /b 村级 户级') do (
- pushd "%%i"
- for /f "delims=" %%j in ('dir /b /ad') do move "%%j" "%%i\.."
- popd
- move "%%i\*.*" "%%i\.."
- rd "%%i"
- )
- pause
复制代码
作者: qixiaobin0715 时间: 2024-9-5 09:45
想到了某位大佬关于筐和球的比喻,筐倒是找到了,突然不知如何是好了。真所谓“拔剑四顾心茫然”。
作者: ppll2030 时间: 2024-9-5 10:07
本帖最后由 ppll2030 于 2024-9-5 10:11 编辑
回复 10# 455027852
要把123456文件夹都转移到上一级文件,然后删除 村级和户级文件夹。
把12行的 move 改为 xcopy /s /e
把13行的 rd 加上参数,改为 rd /s /q
即可。- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /s /ad *目录') do (
- set fd=%%i
- md "目录" 2>nul
- for %%d in ("!fd!\..") do set str=%%~pnxd&set str=!str:%~p0=!&set str=!str:\=!
- move "%%i" ".\目录\!str!目录" >nul
- )
-
- for /f "delims=" %%i in ('dir /b /s /ad *村级 *户级') do (
- set fd=%%i
- for %%d in ("!fd!\..") do set "fdd=%%~dpnxd"
- xcopy /s /e "!fd!\*.*" "!fdd!\" >nul
- rd /s /q "%%i"
- )
- pause
复制代码
作者: 455027852 时间: 2024-9-5 10:47
回复 13# ppll2030
可以了大神,我再自己研究研究。非常感谢。不再麻烦大神了。
作者: 455027852 时间: 2024-9-5 10:48
回复 12# qixiaobin0715
可能权限问题,不能上传图片。语文不好,大神勿怪。不麻烦大神了,我自己改改大神代码试试。能力有限,感谢大神!!
作者: qixiaobin0715 时间: 2024-9-5 10:51
有感而发,自说自话。不要会错意啊!
作者: 77七 时间: 2024-9-5 11:30
本帖最后由 77七 于 2024-9-5 12:10 编辑
上传图片可以用图床
- @echo off
- rem 保存为ansi
- cd /d "%~dp0"
- for %%a in ("目录" "村级" "户级") do (
- set _"%%~a"=1
- )
- for /d %%d in (*) do (
- if not defined _"%%d" (
- set str=%%d
- call :1 "%%d"
- )
- )
- pause
- exit
-
- :1
- for /d %%d in ("%~1\*") do (
- set str=%str%%%~nxd
- if defined _"%%~nxd" (
- robocopy "%%~dpd目录" "目录\%str%目录" /e /move
- robocopy "%%~dpd村级" "%%~dpd\" /e /move
- robocopy "%%~dpd户级" "%%~dpd\" /e /move
- exit /b
- ) else (
- call :1 "%%d"
- )
- )
- exit /b
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |