我有一個包含超過100個子文件夾的父文件夾。我想要一個包含子文件夾及其大小的文本文件。你能幫我建立批處理程序嗎?文件夾列表及其大小
0
A
回答
0
僅針對無大小的文件名,你可以使用此代碼 -
dir *.* /b /s >> C:\ListOfFile.txt
更改您的「C:\」每當你想保存文件的路徑。
+0
謝謝先生。這給出像子文件夾1,子文件夾2,子文件夾3等輸出。我想構建該程序以獲取每個子文件夾的大小。 –
0
這個代碼可以做的伎倆:
@echo off
Title Get Size of Folder and its subfolders
set "Folder=C:\temp"
Set Log=Folder_Size.txt
(
echo The size of "%Folder%" is
Call :GetSize "%Folder%"
)> "%Log%"
For /f "delims=" %%a in ('Dir "%Folder%" /AD /b /s') do (
(
echo The size of "%%a" is
Call :GetSize "%%a"
)>> "%Log%"
)
start "" "%Log%"
::***********************************************************************
:GetSize
(
echo wscript.echo GetSize("%~1"^)
echo Function GetSize(MyFolder^)
echo Set fso = CreateObject("Scripting.FileSystemObject"^)
echo Set objFolder= fso.GetFolder(MyFolder^)
echo GetSize = FormatSize(objFolder.Size^)
echo End Function
echo '*******************************************************************
echo 'Function to format a number into typical size scales
echo Function FormatSize(iSize^)
echo aLabel = Array("bytes", "KB", "MB", "GB", "TB"^)
echo For i = 0 to 4
echo If iSize ^> 1024 Then
echo iSize = iSize/1024
echo Else
echo Exit For
echo End If
echo Next
echo FormatSize = Round(iSize,2^) ^& " " ^& aLabel(i^)
echo End Function
echo '*******************************************************************
)>%tmp%\Size.vbs
Cscript /NoLogo %tmp%\Size.vbs
Del %tmp%\Size.vbs
Exit /b
::***********************************************************************
0
你雖然沒有表現出任何的努力去嘗試它你自己,我決定幫助你,因爲任務可能不是特別的瑣碎來完成。 ..
你有沒有看過dir /S
(列出指定目錄及其所有子目錄中的文件的命令)的輸出?它總結文件的總數在最後,還包括整體尺寸:
D:\TEMP>dir /S /-C Volume in drive D is DATA Volume Serial Number is XXXX-XXXX Directory of D:\TEMP 2016/05/12 12:00 <DIR> . 2016/05/12 12:00 <DIR> .. 0 File(s) 0 bytes Total Files Listed: 0 File(s) 0 bytes 2 Dir(s) ?????????? bytes free
因此,我們可以在給定位置的每個目錄做dir /S
命令,使用for /F
環捕捉它的輸出,檢索最後一行之前的行並提取大小值。
以下純batch-file腳本 - 我們稱之爲folder_sizes.bat
- 究竟下列步驟操作:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
rem // Get provided arguments:
set "FOLDER=%~1"
set "LOG=%~2"
rem // Check provided arguments:
if not defined LOG set "LOG=con"
setlocal EnableDelayedExpansion
>&2 (
if not defined FOLDER (
echo(ERROR: no directory specified!
exit /B 1
) else if not exist "!FOLDER!\" (
rem /* (trailing "\" to check for directory) */
echo(ERROR: directory not found!
exit /B 1
)
)
rem // Process all sub-directories of given directory:
> "!LOG!" (
for /D %%D in ("!FOLDER!\*") do (
for /F "skip=10 tokens=3" %%F in ('
dir /S /-C "%%~fD"
') do (
set "BYTES=!VALUE!"
set "VALUE=%%F"
)
setlocal DisableDelayedExpansion
set "ITEM=%%~nxD"
setlocal EnableDelayedExpansion
rem // Return name and size of sub-directory:
echo(!ITEM! !BYTES!
endlocal
endlocal
)
)
endlocal
endlocal
exit /B
要在某個目錄運行此腳本 - 例如D:\TEMP
- 和寫日誌數據到文件folder_sizes.log
在當前目錄中,使用下面的命令行:
folder_sizes.bat "D:\TEMP" ".\folder_sizes.log"
在腳本中,在delayed expansion爲了避免與(子)directorie問題被切換在他們的名字中包含驚歎號(!
)。
請注意,dir /S
命令的輸出是依賴於語言的,因此該腳本可能無法在英語系統以外的系統上提供預期結果。在這種情況下,for /F
循環的選項字符串"skip=10 tokens=3"
,特別是token
選項需要相應地進行調整。
相關問題
- 1. Bash - 列表和排序文件及其大小和名稱和大小
- 2. 文件夾及其在bat文件中的日期列表
- 3. 循環遍歷文件夾及其子文件夾的特定列表VBA宏
- 4. 保護文件夾及其文件
- 5. Python Watch文件夾 - 文件大小的詢問列表
- 6. 列出Google Drive SDK中的所有文件夾及其文件
- 7. 文件夾大小linux
- 8. Docker/vfs文件夾大小
- 9. PHP的文件夾大小?
- 10. 確定文件夾大小
- 11. 文件夾大小錯誤
- 12. 獲取文件夾大小
- 13. 列表增加其大小
- 14. std :: experimental :: filesystem :: recursive_directory_iterator跳過文件夾及其子文件夾
- 15. 創建一個文件夾及其子文件夾
- 16. 在Objective-C/C中刪除文件夾及其子文件夾
- 17. 如何創建圖像列表及其大小(分辨率)?
- 18. 定位文件夾及其所有子文件夾/子文件夾
- 19. 將文件夾及其文件複製到其他位置
- 20. 文件總大小和子文件夾
- 21. 列出所有文件和文件夾的大小爲
- 22. 使用python將文件夾從文件夾列表移動到其他文件夾列表
- 23. Alfresco webscript獲取所有文件和文件夾的大小列表
- 24. 如何刪除文件夾及其子文件夾內的所有空文件?
- 25. python來檢查csv文件的大小,某些大小的csv文件將被移動到其他文件夾
- 26. 文件夾大小如何大於磁盤上的大小?
- 27. 如何獲得文件大小小於500mb的文件列表?
- 28. 將文件夾拆分成一定大小的文件夾
- 29. 如何在shell中刪除文件及其文件夾?
- 30. 如何從Python文件夾及其內容導入文件3
什麼操作系統? – pfnuesel
您能否展示迄今爲止的代碼? – marthursson
你好,Windows7是操作系統。 –