标题: [文本处理] [已解决]求BAT能给当前所有文件夹的文件名前添加文件夹大小 [打印本页]
作者: 8532200 时间: 2021-5-20 21:09 标题: [已解决]求BAT能给当前所有文件夹的文件名前添加文件夹大小
比如我的G盘根目录有4个文件夹
分别在G盘
G:\11
G:\22
G:\33
G:\44
其中11文件夹大小是500G
22文件夹大小是500M
33文件夹是500K
求在它们的文件夹名字前加上文件夹大小
变成G:\500G11或者G:\500GB11
等类似结果。。。
空白文件夹最好可以是0B或者能够写在文件夹名字前就可以了。。拜托了
作者: xp3000 时间: 2021-5-20 21:51
本帖最后由 xp3000 于 2021-5-20 22:33 编辑
文件夹以前可能存放过文件,造成以下情况
可能存在默认生成文件:desktop.ini
可能存在图片缩略图缓存文件:Thumbs.db
两个都是隐藏的- @echo off
- for /f "tokens=*" %%i in ('dir/s/b/ad^|sort /r') do (
- attrib -a -s -r -h "%%i\desktop.ini">nul 2>nul&del /f /s /q "%%i\desktop.ini">nul 2>nul
- attrib -a -s -r -h "%%i\Thumbs.db">nul 2>nul & del /f /s /q "%%i\Thumbs.db">nul 2>nul
- rd "%%i"
- )
- pause
复制代码
作者: newswan 时间: 2021-5-20 22:20
- @echo off
- setlocal enableDelayedExpansion
-
-
- for /f "delims=" %%a in ('dir /ad /b /s G:\22ywc\manh22') do (
- set n=0
- for /f "delims=" %%a in ('dir /b /a-d "%%~fa"') do (
- set n=1
- )
- if !n!==0 echo rd /s /q "%%~fa"
- )"
复制代码
先测试,如果正确 删除 echo rd 中的 echo
作者: 8532200 时间: 2021-5-20 22:42
回复 3# newswan
感谢你的回复。。实测没有效果。。试了好几种方法都不行
作者: 8532200 时间: 2021-5-20 22:44
回复 2# xp3000
感谢回复,,实测没有效果
提示信息
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
目录不是空的。
请按任意键继续. . .
作者: 8532200 时间: 2021-5-20 22:48
回复 2# xp3000
用途是去除空白文件夹。。。但我发现那个不够保险。。。所以求得是在文件夹面前添加文件夹的大小
作者: newswan 时间: 2021-5-20 22:50
你要删除的目录里,是不是有隐藏文件,或者没有权限,先找到问题
作者: xp3000 时间: 2021-5-20 22:54
也就是说,文件夹看着是空的,显示目录不是空的,目录里面有隐藏的文件,至少你得在文件夹把,查看→文件夹选项,里面勾选显示隐藏文件夹选项,看看文件夹里面有什么隐藏的
作者: 8532200 时间: 2021-5-20 22:59
回复 7# newswan
并不是这样。。。实测还是没办法的。。。。。打开属性看,,,就是0字节。。。目录里面还有空白目录。。。所以不能检测。。。。所以目前求得是给文件夹添加文件夹大小。。这样我可以手动删除
作者: 8532200 时间: 2021-5-20 23:00
回复 8# xp3000
并不是这样。。。实测还是没办法的。。。。。打开属性看,,,就是0字节。。。目录里面还有空白目录。。。所以不能检测。。。。所以目前求得是给文件夹添加文件夹大小。。这样我可以手动删除
截了图的,,,发现上传不了。。。总之。。。。目前主要用途虽然是删除空白文件夹。。。但是只能求其他bat来实现稳妥的删除
作者: went 时间: 2021-5-20 23:03
写过类似的工具,由于隐藏文件和权限问题,空文件夹不一定显示正确
选中项目右键打开后再操作文件排序工具
作者: xp3000 时间: 2021-5-20 23:04
我新建一个文件夹,将其他文件夹由系统生成的配置文件,一个或两个,4k,16k或1k大小,复制到新文件夹后重新勾选隐藏,属性上占用空间0,明明有两个文件,大小15k
作者: went 时间: 2021-5-20 23:17
回复 11# went
当前保留4位小数,如果需要更精确
右键编辑,ctrf+f查找 {0:f4} MB 修改
作者: newswan 时间: 2021-5-20 23:27
gnu 命令
du
tree -s -d
作者: went 时间: 2021-5-21 00:45
test.bat
ansi编码- @echo off & cd /d "%~dp0"
- setlocal enabledelayedexpansion
- for /d %%i in (*) do (
- echo %%i
- for /f "tokens=3" %%a in ('dir /s "%%~i" ^| findstr "个文件"') do set "size=%%a"
- set "size=!size:,=!"
- set "str_size="
- call :_fun "!size!/1024"
- if "!b!"=="0" (
- REM 字节
- set "str_size=!size!B"
- ) else (
- set "k=!b!"
- call :_fun "!b!/1024"
- if "!b!"=="0" (
- REM KB
- set "str_size=!k!KB"
- ) else (
- set "k=!b!"
- call :_fun "!b!/1024"
- if "!b!"=="0" (
- REM MB
- set "str_size=!k!MB"
- ) else (
- REM GB
- set "str_size=!b!GB"
- )
- )
- )
- echo !str_size!
- echo %%i --^> !str_size!-%%i
- rename "%%i" "!str_size!-%%i"
- echo -----------
- )
- pause&exit
- :_calc
- set "_calc=mshta "javascript:var fso=new ActiveXObject("Scripting.FileSystemObject");fso.GetStandardStream(1).WriteLine(%~1);window.close()""
- for /f "delims=" %%i in ('%_calc%') do set "%~2=%%i"
- goto :eof
- :_split
- set "b=%~n1"
- set "c=%~x1"
- set "c=!c:~1!"
- goto :eof
- :_fun
- call :_calc "%~1" "a"
- call :_split "!a!"
- goto :eof
复制代码
作者: 8532200 时间: 2021-5-21 00:55
回复 15# went
感谢回复。
实测成功
不过速度有点慢的太恐怖了。。。。。少量文件夹还可以
很少遇到这么长代码的BAT。。真的非常非常非常感谢。。。这个bat我其实使用频率比较低。。所以之前用的是删除空文件夹那个bat
作者: went 时间: 2021-5-21 01:08
本帖最后由 went 于 2021-5-21 01:11 编辑
回复 16# 8532200
子文件夹层级数过多,dir /s 命令输出就要很久,耗时就变长
而且bat并没有处理大数字和浮点数的能力
作者: 8532200 时间: 2021-5-21 10:48
回复 17# went
我不懂怎么快速。。。但是我有类似bat
这个bat是列出当前文件夹所有文件夹里面有多少文件并且写在文件夹前面。。。速度极度快。。。
@Powershell -v 3 -nolog "& {[ScriptBlock]::Create("'#' + ([io.file]::ReadAllText('%~f0',[text.encoding]:efault))").Invoke()}" & pause & exit
$dirItems = Get-ChildItem -Path './' -Directory;
foreach($item in $dirItems)
{
$files = $item.GetFiles();
$newName = "{0:d7}" -f ($files.Count);
$newName += $item.Name;
Rename-Item -Path $item -NewName $newName;
}
目前求得这个bat我很少很少使用。。所以没事。。。也很少有可能需要遇到几千几万个这样做的文件夹
不管怎样,起码你的这个bat已经很好了,感谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |