文件夹及其在bat文件中的日期列表
我想创建一个文件夹列表和它们具有的大小,基本上是因为我的驱动器空间很小。我无法弄清楚我在哪里以及为什么会耗尽空间,因此我想创建一个所有文件夹的列表,其大小和修改日期(或创建日期也适用)。 要列出文件夹及其大小是我管理的东西,但我不知道如何编写修改日期。我尝试了一些设置“mtime = %%〜tf”的变体,但没有成功。我对每个文件夹的内容都不感兴趣,只是我在脚本中定义的所有子文件夹的相关信息。 低于我迄今为止所做的(也经过测试)。 在此先感谢!文件夹及其在bat文件中的日期列表
后来编辑:不是重复的,该文章解释了如何编写大小,我已经想通了,它是写在代码中。我无法弄清楚如何写修改/创建日期太..
@echo off
pushd "D:\test"
for /f "delims=" %%a in (' dir /ad /b ') do call :size "%%~fa"
popd
pause
goto :eof
:size
for /f "tokens=3" %%b in ('dir /s "%~1" 2^>nul ^|find " File(s)"') do set "n=%%b"
set dirsize=%n%
REM set dirsize=%dirsize:,=%
set dirsize=%dirsize%
set dirsize=%dirsize:~-18%
>>"D:\test\dirsize.tmp" echo %dirsize% "%~1"
输出:
7,557 "D:\test\e" 2,519 "D:\test\t" 2,519 "D:\test\ta"
看到我的完整的答案在这里清理硬盘驱动器 https://answers.microsoft.com/en-us/windows/forum/windows_vista-files/need-help-in-deleting-un-neccesary-files-from-the/a6daf1f1-7c50-45bd-b7a9-7732b5c19f28
查看文件占用空间的位置
这将列出驱动器上文件夹的文件数量和大小。每个命令都有一个子集,所以你可以更好地管理它。
开始 - 所有程序 - 附件 - 右键单击命令提示符并选择以管理员身份运行。键入(或通过右键单击命令提示符窗口并选择粘贴复制并粘贴)。
然后配置命令提示符。右键单击命令提示符的标题栏 - 属性 - 布局选项卡 - 然后输入1000作为屏幕缓冲区大小高度,并为窗口大小高度输入43(或50)。如果需要,请更改颜色(颜色标签)和字体(字体标签)。
查看文档中文件夹的大小,不包括音乐,视频或图片文件夹。
for /f "skip=2 tokens=3" %A in ('Reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Personal"') do set doc=%A
for /f "usebackq tokens=2* delims= " %i IN (`dir "%doc%" /a /s ^|findstr /i /v "\/"^|findstr /l /v "Pictures Music Video"`) DO @echo %j&echo.
查看音乐文件夹的大小。
for /f "skip=2 tokens=4" %A in ('Reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "My Music"') do set Doc=%A
for /f "usebackq tokens=2* delims= " %i IN (`dir "%doc%" /a /s ^|findstr /i /v "\/"`) DO @echo %j&echo.
查看图片中文件夹的大小。
for /f "skip=2 tokens=4" %A in ('Reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "My Pictures"') do set Doc=%A
for /f "usebackq tokens=2* delims= " %i IN (`dir "%doc%" /a /s ^|findstr /i /v "\/"`) DO @echo %j&echo.
查看视频中文件夹的大小。
for /f "skip=2 tokens=4" %A in ('Reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "My Video"') do set Doc=%A
for /f "usebackq tokens=2* delims= " %i IN (`dir "%doc%" /a /s ^|findstr /i /v "\/"`) DO @echo %j&echo.
查看桌面上文件夹的大小。
for /f "skip=2 tokens=3" %A in ('Reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Desktop"') do set doc=%A
for /f "usebackq tokens=2* delims= " %i IN (`dir "%doc%" /a /s ^|findstr /i /v "\/"`) DO @echo %j&echo.
查看文件夹的大小Windows文件夹。
for /f "usebackq tokens=2* delims= " %i IN (`dir "%windir%" /a /s ^|findstr /i /v "\/"`) DO @echo %j&echo.
查看Program Files文件夹的大小。
for /f "usebackq tokens=2* delims= " %i IN (`dir "%ProgramFiles%" /a /s ^|findstr /i /v "\/"`) DO @echo %j&echo.
你好。同样,我对计算大小不感兴趣,已经用bat文件完成了。我有兴趣在临时文件中写入日期,目前我无法做到这一点。 –
起初,我会改变检索文件夹大小的策略,因为你的做法是强烈依赖语言环境。但也有可以做,以避免两件事情:
- ,以便避免千个分组符号开关
/-C
添加到dir
命令; - 不搜索文本
File(s)
,而只是读取倒数第二行;
因此,这是改变的代码(我希望我理解你的错误格式的代码右):
@echo off
pushd "D:\test"
> "D:\test\dirsize.tmp" (
for /F "eol=| delims=" %%A in ('
dir /B /A:D
') do (
call :SIZE "%%~fA"
)
)
popd
goto :EOF
:SIZE
set "NUM="
for /F "skip=2 tokens=3" %%B in ('
2^> nul dir /S /-C "%~1"
') do (
call set "DIRSIZE=%%NUM%%"
set "NUM=%%B"
)
echo %DIRSIZE% "%~1"
的skip=2
选项只是避免了两行标题中出现错误的情况下被读取。
echo %~t1 %DIRSIZE% "%~1"
:
要添加的每个目录的最后修改的日期/时间,只需在子程序:SIZE
的最后一行使用~t
modifier对于参数参考%1
为了获取每个文件夹的创建日期/时间,没有修饰符,但有/T:C
option of the dir
命令和目录.
,这是第一个返回的项目,指向给定的文件夹本身。因此,我们可以用另一种for /F
循环到下一个拍摄日期/时间.
,这是在新的子程序:CDAT
下面的代码来实现:
@echo off
pushd "D:\test"
> "D:\test\dirsize.tmp" (
for /F "eol=| delims=" %%A in ('
dir /B /A:D
') do (
call :CDAT "%%~fA"
call :SIZE "%%~fA"
)
)
popd
goto :EOF
:SIZE
set "NUM="
for /F "skip=2 tokens=3" %%B in ('
2^> nul dir /S /-C "%~1"
') do (
call set "DIRSIZE=%%NUM%%"
set "NUM=%%B"
)
echo %DIRSIZE% "%~1"
goto :EOF
:CDAT
for /F "skip=5 tokens=1-2" %%C in ('
dir /A:D /T:C "%~1"
') do (
< nul set /P ="%%C %%D "
goto :NEXT
)
:NEXT
goto :EOF
的< nul set /P
命令只是呼应字符串一招没有尾随换行符,所以创建日期/时间与其余部分(大小加文件夹路径)在同一行中返回。
可能的重复[如何通过批处理文件列出与大小的所有文件夹](http://*.com/questions/21711180/how-to-list-all-folder-with-size-via-batch-file ) – JosefZ
不,不是重复的,已经看过那篇文章。答案只是大小。我已经有临时文件中的文件夹和他们的名字的大小,我只是无法弄清楚如何编写创建日期(或修改日期)。 –
@OanaScheianu,请不要改变问题的主题,尤其是在已经发布答案的情况下,因为这些问题可能会失效!改为问一个新问题!有['〜t'修饰符](http://ss64.com/nt/syntax-args.html)返回最后修改日期/时间... – aschipfl