关于CMD批处理按文件大小降序排序文件及循环运行时添加等待计时器的技术问询
CMD批处理按文件大小降序排序文件及循环运行时添加等待计时器的技术问询
哈喽!咱们来逐个解决你关于CMD批处理的两个问题:
1. 如何按文件大小降序排序文件?
你只需要在现有的dir命令里添加一个排序参数就行:
修改后的dir命令为:
dir %%d:\ /s /o-s >> %Systeminfo_TXT%
这里的/o-s是核心:
/o是排序开关,后面跟排序规则;s代表按文件大小排序;- 前缀
-表示采用降序(默认不写-是升序); - 保留的
/s参数继续实现递归扫描子目录的功能。
2. 如何在循环运行时显示计时器?
要在循环运行时显示计时状态,最简单的方式是实时刷新显示系统时间,或者记录开始时间后动态展示当前时长。下面是整合了计时器功能的完整脚本示例:
@echo off setlocal enabledelayedexpansion set "Systeminfo_TXT=systeminfo.txt" :: 记录循环启动的时间 set "start_time=!time!" echo 扫描任务启动时间:!start_time! >> !Systeminfo_TXT! for %%d in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do ( if exist %%d: ( :: 清屏后更新当前状态和时间,避免输出杂乱 cls echo 正在扫描盘符 %%d: ... echo 另有进程运行中!请稍候!!! echo 启动时间:!start_time! echo 当前时间:!time! :: 按大小降序导出目录内容到文件 dir %%d:\ /s /o-s >> !Systeminfo_TXT! ) ) cls echo 扫描任务已完成,结束时间:!time! echo 所有结果已保存到 !Systeminfo_TXT! endlocal
关键细节说明:
setlocal enabledelayedexpansion:必须启用这个,不然循环里的!time!只会取到循环启动时的固定值,没法实时更新当前时间(用%time%会有这个问题);cls:每次扫描新盘符前清屏,让提示信息和时间始终显示在屏幕最上方,看起来更整洁;- 如果需要精确计算已运行的秒数,批处理里需要手动处理时分秒的进位逻辑,相对麻烦,实时显示时间是最直观高效的方案。
备注:内容来源于stack exchange,提问作者shivam
相关产品推荐
相关产品推荐

