标题: [文件操作] [已解决]批处理如何按文件夹内文件个数移动文件夹? [打印本页]
作者: honghong33 时间: 2015-3-14 20:48 标题: [已解决]批处理如何按文件夹内文件个数移动文件夹?
本帖最后由 honghong33 于 2015-3-16 13:00 编辑
现在有上千个文件夹,文件夹名称由汉字、数字、字母、特殊符号构成。每个文件夹内有0-1000(不确定)个文件。
需要的处理是:文件夹内不含文件则删除,其余文件夹按照文件个数移动到同一个文件夹中,如先新建一个文件夹001.含有一个文件的文件夹都移动到这个文件夹中。
1、所有文件夹都在一个同一个文件夹中,需要移动的文件夹内不含文件夹。
2、如 - “-【 】、,~ ‘ ☆ ·」「等。
3、文件夹名称含有繁体字
作者: pcl_test 时间: 2015-3-14 21:13
回复 1# honghong33
1、所有文件夹都在同一文件夹里吗?并且是同级关系吗?
2、都有哪些特殊字符?
作者: honghong33 时间: 2015-3-14 21:33
回复 2# pcl_test
1、所有文件夹都在一个同一个文件夹中,需要移动的文件夹内不含文件夹。
2、如 - “-【 】、,~ ‘ ☆ ·」「等。
3、文件夹名称含有繁体字
作者: pcl_test 时间: 2015-3-14 21:58
本帖最后由 pcl_test 于 2015-3-14 22:01 编辑
回复 3# honghong33 - @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /ad /b') do (
- set n=0
- pushd "%%a\"
- for /f "delims=" %%a in ('dir /a-d /b 2^>nul') do set /a n+=1
- popd
- if !n! == 0 (
- rd "%%a\" /q
- ) else (
- set name=0000!n!
- set name=!name:~-5!
- if not exist "结果\!name!\" md "结果\!name!\"
- move "%%a" "结果\!name!\"
- )
- )
- pause
复制代码
作者: bailong360 时间: 2015-3-14 22:27
- @Echo Off
- SetLocal EnableDelayedExpansion
- For /D %%a In (*) Do (
- Set Empty=1
- Dir /A-D /B "%%a"&&Set Empty=0
- If !Empty!==1 (Rd "%%a") Else (
- For /F %%b In ('Dir /A-D "%%a"^|Findstr /C:"个文件"') Do Set Num=00%%b&Md ..\!Num:~-3!&Copy "%%a\*" ..\%%b
- )
- )>nul 2>nul
复制代码
作者: honghong33 时间: 2015-3-14 22:39
回复 4# pcl_test
文件夹名称中含有^和! 无法移动
作者: pcl_test 时间: 2015-3-14 22:46
回复 6# honghong33
这两个符号需要去掉或替换掉,可以改文件夹名吗??
作者: cobat 时间: 2015-3-15 12:28
- @echo off
- (for /f "delims=" %%a in ('dir /ad /b') do (
- set n=&set "a=%%a"
- pushd "%%a"&for %%b in (*) do set/a n+=1
- setlocal enabledelayedexpansion
- set/a n+=10000
- (popd&rd "!a!")||(md !n:~1!&move "!a!" !n:~1!)
- endlocal
- ))>nul 2>nul
- pause
复制代码
作者: honghong33 时间: 2015-3-15 14:53
回复 7# pcl_test
可以去掉这两个符号
作者: pcl_test 时间: 2015-3-15 21:43
回复 9# honghong33 - @echo off
- for /f "delims=" %%a in ('dir /ad /b') do (
- set "fname=%%a"
- set n=0
- pushd "%%a\"
- for /f "delims=" %%b in ('dir /a-d /b 2^>nul') do set /a n+=1
- popd
- setlocal enabledelayedexpansion
- if !n! == 0 (
- rd "!fname!\" /q
- ) else (
- set name=0000!n!
- set name=!name:~-5!
- if not exist "结果\!name!\" md "结果\!name!\"
- move "!fname!" "结果\!name!\"
- )
- endlocal
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |