使用 forfiles 以十六进制获取文件大小
Get File size in hex using forfiles
我在 CMD 中使用此命令获取目录中的所有文件大小。
forfiles /s /c "cmd /c echo @file @fsize" >filelist.txt
有办法采用这种大小但采用十六进制格式?
示例:
"00000000.png" 219457
到
"00000000.png" 50A6E
虽然这不使用 FORFILES
,但可以在 windows
cmd
batch-file
中使用。由于这是递归搜索,我假设您希望包含完全限定路径以避免在多个目录中使用相同文件名时出现问题。
powershell -NoLogo -NoProfile -Command ^
"$q='\"';Get-ChildItem -File -Recurse ^| ForEach-Object {$($q+$_.FullName+$q) + ' ' + $($_.Length.ToString('X'))}"
嗯,forfiles
当然不支持十进制转十六进制了
本机不支持在纯传统批处理脚本中转换数字,因此您将不得不借用另一种语言(如 PowerShell、VBScript、JavaScript,所有这些都随现代 Windows 系统),或者自己用困难的方式编写代码(一步一步,就像在纸上做一样)。
无论如何,幸运的是有一个隐藏的和未记录的动态伪变量叫做=ExitCode
, which holds the hexadecimal value of the most recent exit code,我们可以利用它:
rem // Iterate through all files in the current working directory:
for /R %%I in (*.*) do (
rem // Store name of currently iterated item:
set "ITEM=%%~I"
rem // Toggle delayed expansion to avoid issues with `!` and `^`:
setlocal EnableDelayedExpansion
rem // Explicitly set exit code to the size of the current file:
cmd /C exit 0%%~zI
rem // Return the exit code, hence the file size, as hex number:
echo(!ITEM! !=ExitCode!
endlocal
)
请注意,文件大小必须小于 2 GiB,因为退出代码以带符号的 32 位整数形式给出。
我在 CMD 中使用此命令获取目录中的所有文件大小。
forfiles /s /c "cmd /c echo @file @fsize" >filelist.txt
有办法采用这种大小但采用十六进制格式?
示例:
"00000000.png" 219457
到
"00000000.png" 50A6E
虽然这不使用 FORFILES
,但可以在 windows
cmd
batch-file
中使用。由于这是递归搜索,我假设您希望包含完全限定路径以避免在多个目录中使用相同文件名时出现问题。
powershell -NoLogo -NoProfile -Command ^
"$q='\"';Get-ChildItem -File -Recurse ^| ForEach-Object {$($q+$_.FullName+$q) + ' ' + $($_.Length.ToString('X'))}"
嗯,forfiles
当然不支持十进制转十六进制了
本机不支持在纯传统批处理脚本中转换数字,因此您将不得不借用另一种语言(如 PowerShell、VBScript、JavaScript,所有这些都随现代 Windows 系统),或者自己用困难的方式编写代码(一步一步,就像在纸上做一样)。
无论如何,幸运的是有一个隐藏的和未记录的动态伪变量叫做=ExitCode
, which holds the hexadecimal value of the most recent exit code,我们可以利用它:
rem // Iterate through all files in the current working directory:
for /R %%I in (*.*) do (
rem // Store name of currently iterated item:
set "ITEM=%%~I"
rem // Toggle delayed expansion to avoid issues with `!` and `^`:
setlocal EnableDelayedExpansion
rem // Explicitly set exit code to the size of the current file:
cmd /C exit 0%%~zI
rem // Return the exit code, hence the file size, as hex number:
echo(!ITEM! !=ExitCode!
endlocal
)
请注意,文件大小必须小于 2 GiB,因为退出代码以带符号的 32 位整数形式给出。