- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
来自 FOR /?
:
In addition, substitution of FOR variable references has been enhanced.
You can now use the following optional syntax:
%~I - expands %I removing any surrounding quotes (")
%~fI - expands %I to a fully qualified path name
%~dI - expands %I to a drive letter only
%~pI - expands %I to a path only
%~nI - expands %I to a file name only
%~xI - expands %I to a file extension only
%~sI - expanded path contains short names only
%~aI - expands %I to file attributes of file
%~tI - expands %I to date/time of file
%~zI - expands %I to size of file
%~$PATH:I - searches the directories listed in the PATH
environment variable and expands %I to the
fully qualified name of the first one found.
If the environment variable name is not
defined or the file is not found by the
search, then this modifier expands to the
empty string
我已经运行了一个执行 @echo %~aI %~fI ^<%~zI byte^(s^)^>
的 Windows 批处理脚本在FOR
循环遍历目录(每个目录的路径都存储在 %I
中)并得到以下输出:
d--hs------ J:\$RECYCLE.BIN <0 byte(s)>
d---------- J:\Multimedia <4096 byte(s)>
dr--------- J:\-C-\……\Desktop <12288 byte(s)>
dr--------- J:\-C-\……\Documents <28672 byte(s)>
dr--------- J:\-C-\……\Downloads <81920 byte(s)>
上述目录的“大小”与其中文件的大小无关。 %~zI
中的“尺寸”到底是什么意思? ?是 %I
一个普通文件,它将是它的大小。但是如果%I
怎么办?是一个目录?我不太明白。真的没有意义吗?
最佳答案
这是目录条目
消耗的空间目录实际上是一个包含其他文件和目录的特殊文件,因此它必须将该列表与必要的元数据一起存储在某个地方。一些文件系统会分配正常的簇并将元数据存储在该数据区域
NTFS 将对大文件夹执行相同的操作。然而在 NTFS 中小文件也可以 stay resident in the MFT entry ,这就是为什么您可以看到一些零字节文件夹的原因,因为它们不需要为目录元数据单独分配 block
包含这些元数据的流的名称是 $I30
In the case of directories, there is no default data stream, but there is a default directory stream. Directories are the stream type
$INDEX_ALLOCATION
. The default stream name for the type$INDEX_ALLOCATION
(a directory stream) is$I30
您可以使用 fsutil file layout <directory_path>
进行检查并查看 $I30
溪流。例如,这里是我的 PC 的输出。注意 %~zI
中的相同尺寸和 fsutil
输出。大小为 0 的文件夹只包含一个很小的 $INDEX_ROOT
流,而其他人有另一个 $INDEX_ALLOCATION
与 %~zI
的输出大小相同
PS C:\> cmd /c "for /d %I in (*) do @echo %~aI %~fI ^<%~zI byte^(s^)^>"
d---------- C:\ESD <0 byte(s)>
d---------- C:\Intel <0 byte(s)>
d---------- C:\PerfLogs <0 byte(s)>
dr--------- C:\Program Files <8192 byte(s)>
dr--------- C:\Program Files (x86) <4096 byte(s)>
dr--------- C:\Users <4096 byte(s)>
d---------- C:\Windows <16384 byte(s)>
d---------- C:\Windows.old <4096 byte(s)>
PS C:\> foreach ($f in ls -Attr Directory) {
>> $fileLayout = (fsutil file layout $f) -join "`0"
>> $result = (([regex]'\$I30.*?(?=Stream|$)').Matches($fileLayout)) -split "`0" | Select-String -Pattern '\$I30| Size'
>> echo "================================ $f"; $result
>> }
================================ ESD
$I30:$INDEX_ROOT
Size : 48
================================ Intel
$I30:$INDEX_ROOT
Size : 368
================================ PerfLogs
$I30:$INDEX_ROOT
Size : 48
================================ Program Files
$I30:$INDEX_ROOT
Size : 168
$I30:$INDEX_ALLOCATION
Size : 8,192
$I30:$BITMAP
Size : 8
================================ Program Files (x86)
$I30:$INDEX_ROOT
Size : 56
$I30:$INDEX_ALLOCATION
Size : 4,096
$I30:$BITMAP
Size : 8
================================ Users
$I30:$INDEX_ROOT
Size : 56
$I30:$INDEX_ALLOCATION
Size : 4,096
$I30:$BITMAP
Size : 8
================================ Windows
$I30:$INDEX_ROOT
Size : 432
$I30:$INDEX_ALLOCATION
Size : 16,384
$I30:$BITMAP
Size : 8
================================ Windows.old
$I30:$INDEX_ROOT
Size : 56
$I30:$INDEX_ALLOCATION
Size : 4,096
$I30:$BITMAP
Size : 8
当 ls -l
显示的大小时,同样的事情发生在 *nix 上不是目录内文件的总大小:
ls -l
command? 在 C++17 中有 std::filesystem::directory_entry
获取目录信息
关于windows - 对于 FOR 循环中的目录, “%~zI” 究竟扩展到了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53094870/
来自 FOR /? : In addition, substitution of FOR variable references has been enhanced. You can now use
我想知道为什么在 VS 2013 下/Zi 编译器选项几乎使构建静态库的大小增加了一倍。 据我了解/Zi 选项,所有生成的调试信息都存储在 .pdb 文件中,并且只为每个 .obj 文件添加指向该文件
我想尝试使用 FFT 而不是计算 y=filter(b,a,x,zi) 和 dy[i]/dx[j]在时域中可能加速 GPU 实现。 我不确定这是否可能,尤其是当 zi 不为零时。我查看了 scipy
如何找到长度恰好为 8 个字符且以 zi 开头的文件示例名称: /home/ziDZaTxG /home/ziIbLnaG /home/ziQxgoXh /home/ziw2NOBD /home/zi
我在 Visual Studio 2012 解决方案中有以下项目: native (无 /clr )静态库项目,使用 /ZI 编译编辑并继续。 C++/CLI DLL 项目,它引用了上面的静态库。 C
背景 有几种不同的debug flags您可以与 Visual Studio C++ 编译器一起使用。他们是: (无) 创建无调试信息 更快的编译时间 /Z7 使用 CodeView 格式在 .obj
我的程序出现以下错误: error D8016: '/ZI' and '/clr' command-line options are incompatible 当我放置以下行并在配置->常规中启用
背景 有几种不同的debug flags您可以使用 Visual Studio C++ 编译器。它们是: (无) 不创建调试信息 更快的编译时间 /Z7 使用 CodeView 格式在 .obj 文件
Visual Studio 错误 D8016:“/ZI”和“/O2”命令行选项不兼容 我第一次使用 C++ 进行优化。当我“构建解决方案”时,我不断收到此错误。在属性页中,我将配置设置为发布在 pro
我正在处理的项目有问题。尽管代码是正确的,但我无法构建它,因为出现以下错误 Error D8016 '/ZI' and '/Gy-' command-line options are incompat
我找到了很多关于创建具有特定数值的数组的帮助,但我似乎找不到任何东西来帮助我在第一个或第二个问题中设置数组。 我不是在问这个作业的答案,这只是我的第一个 Python 作业,所以我是初学者,不知道如何
我是一名优秀的程序员,十分优秀!