我想要一个简单的解决方案,用于文件夹列表和txt或csv格式的大小.
我将此代码用于文件夹列表
dir C:\Temp\*.* /b /a:d > C:\folderList.txt
Run Code Online (Sandbox Code Playgroud)
电流输出
<<folderList.txt>>
folder1
folder2
folder3
Run Code Online (Sandbox Code Playgroud)
期望的输出
<<folderList.txt>>
folder1 # 100 MB
folder2 # 30 MB
folder3 # 110 MB
Run Code Online (Sandbox Code Playgroud)
它只会生成每个文件夹的大小..我该怎么办?任何帮助
我想计算R中目录的大小。list.info不幸的是,我尝试使用该函数,因为它遵循符号链接,所以我的结果有偏见:
# return wrong size, with duplicate counts for symlinks
sum(file.info(list.files(path = '/my/directory/', recursive = T, full.names = T))$size)
Run Code Online (Sandbox Code Playgroud)
如何计算目录的文件大小,以使它获得与Linux上相同的结果du -s,例如?
谢谢
请看下面对不同方式的一些测试比较的原始问题:
所以我到目前为止尝试了两种方法:
1.使用Windows命令行中的获取文件夹大小中的代码遍历目录:
@echo off
set size=0
for /r %%x in (folder\*) do set /a size+=%%~zx
echo %size% Bytes
Run Code Online (Sandbox Code Playgroud)
2.保存输出
'dir %folder% /s /a'
Run Code Online (Sandbox Code Playgroud)
进入文本文件,然后读入底部的大小
我现在尝试的最后一种方法是使用du(来自MS的磁盘实用工具 - https://technet.microsoft.com/en-us/sysinternals/bb896651.aspx).
现在除#3外,这两种方式似乎都太慢了我所需要的(数以千计的文件).所以问题是哪一个是最快的/应该是最快的,如果有任何其他快速(呃)方法来获得具有100k +文件的文件夹内容的大小(并且有100个文件夹)
下面是我非常hacky做比较的方法(屠宰我的程序看到一些输出)
有一些小错误,一些部分,如选项3将失败,因为它试图处理大于32位限制的数字,我是确定还有一些问题,但我认为一般的时间是明显的,除非我真的搞砸了我的逻辑.
选项I:遍历目录,使用VB脚本读取'dir'的文本输出并查找最后的大小+将其转换为MB(最初从其他地方获得它,我实际上失去了我得到它的地方选项II:迭代,使用findstr管道并直接输出结果(不转换为MB) - 来自@MC ND选项III:使用compact命令迭代 - 来自@npocmaka选项IV:来自@ user1016274 - 使用robocoby
(还有一些答案,但这些是我能够融入的答案)
这些是我得到的结果,它们相互之间非常一致,robocopy将它们吹走了
选项I和选项II通常都很接近,选项II稍微好一点(两者都在1分10秒到2分10秒之间,不确定差异来自哪里)第III部分 - 16-17分钟第IV部分 - 10-20秒
@echo OFF
setlocal enabledelayedexpansion
REM OPTION I - directory iteration
REM OPTION II - iteration with findstr pipe
REM OPTION III - compact
:MAIN
REM Initialize log filename …Run Code Online (Sandbox Code Playgroud)