![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 15:57 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 【求助】如何获得当前目录中文件大小最大的文件的名字 |
| 可打印版本 1,647 / 14 |
| 第1楼 bugmenot | 发表于 2007-04-24 08:59 |
| 新手上路 发帖 6 积分 14 | |
|
【求助】如何获得当前目录中文件大小最大的文件的名字 我想获得当前目录中文件大小最大的文件的名字。
为什么for中的set没有执行到啊? 谢谢。 |
|
| 第2楼 bjsh | 发表于 2007-04-24 09:35 |
| 银牌会员 发帖 621 积分 2,000 | |
|
首先 for要用单一字母来表示变量
所以%%2是不对的;而要使用%%i等字母 set "filesize=%%~za" 不要加不必要的空格; set t = 1 是赋不了值的;需要 set t=1; (但是 set /a t = 1 却是可以赋值的;) 为了避免不必要的空格;尽量养成 set "t=1" 加引号的习惯; 还有就是变量延迟的问题; for在执行过程中会把其中的环境变量先替换为 其对应的值; 也就是说 for 在执行的时候是 for %%i in (*.exe) do if 0 LSS %%~z2 set "filesize=%%~z2" & echo %%i > exefilelist.txt 标记处是不变的;一直为常数0;而不会随着filesize的重定义而改变; 此时就需要用到变量延迟;以使得%filesize%不是在开始时就赋值;而是随着程序的执行而改变; 关于变量延迟的详细可以搜索旧贴; 所以正确代码如下
|
|
| 第3楼 bugmenot | 发表于 2007-04-24 09:38 |
| 新手上路 发帖 6 积分 14 | |
|
非常感谢!
java 用贯了。哈哈。 |
|
| 第4楼 bugmenot | 发表于 2007-04-24 10:36 |
| 新手上路 发帖 6 积分 14 | |
|
又有新的问题了,怎样排出某个(某些)特定的文件?(比如:Unwiz.exe, Un2install.exe)
感激。 |
|
| 第5楼 bjsh | 发表于 2007-04-24 11:33 |
| 银牌会员 发帖 621 积分 2,000 | |
|
@echo off &setlocal enabledelayedexpansion
set /a "filesize=0" for %%i in (*.exe) do ( if "%%i"=="Unwiz.exe" goto end if "%%i"=="Un2install.exe" goto end if !filesize! lss %%~zi set "filesize=%%~zi" & echo %%i >exefilelist.txt :end ) |
|
| 第6楼 lxmxn | 发表于 2007-04-24 12:06 |
| 版主 发帖 4,938 积分 11,386 | |
|
还可以利用dir的/o参数来实现楼主最初的想法。
[ Last edited by lxmxn on 2007-4-24 at 01:14 AM ] |
|
| 第7楼 lxmxn | 发表于 2007-04-24 12:17 |
| 版主 发帖 4,938 积分 11,386 | |
|
To bjsh:
测试了一下5楼的代码,提示命令语法不正确,我想原因是for命令内部不允许使用标签。 我又用"for /l"写了个简单的批处理来测试for命令内部使用标签的情况,仍然提示命令语法错误。 |
|
| 第8楼 bjsh | 发表于 2007-04-24 12:35 |
| 银牌会员 发帖 621 积分 2,000 | |
|
确实;谢lxmxn指正;
现修改代码如下 @echo off &setlocal enabledelayedexpansion set /a "filesize=0" for %%i in (*.exe) do ( if "%%i"=="Unwiz.exe" set "w=1" if "%%i"=="Un2install.exe" set "w=1" if not defined w if !filesize! lss %%~zi set "filesize=%%~zi" & echo %%i >exefilelist.txt set "w=" ) [ Last edited by bjsh on 2007-4-23 at 11:36 PM ] |
|
| 第9楼 dikex | 发表于 2007-04-24 13:54 |
| 高级用户 发帖 366 积分 788 | |
|
感觉还是使用dir来完成的效率较高,不过6楼的dir的参数貌似错了,变成了按日期排列-_-
发一个加上了排除的 |
|
| 第10楼 lxmxn | 发表于 2007-04-24 14:14 |
| 版主 发帖 4,938 积分 11,386 | |
Originally posted by dikex at 2007-4-24 00:54: 不好意思,又笔误了。 多谢兄细心的观察,代码已经修正。 |
|
| 第11楼 bugmenot | 发表于 2007-04-24 21:33 |
| 新手上路 发帖 6 积分 14 | |
|
非常感谢大家的回答。
本来是想注册个马甲问完问题就闪~看来要好好来这里学学dos了~哈哈 |
|
| 第12楼 bugmenot | 发表于 2007-04-24 21:35 |
| 新手上路 发帖 6 积分 14 | |
|
继续出难题:
如果我想排除 un 开头的所有 exe 呢? |
|
| 第13楼 bugmenot | 发表于 2007-04-24 21:40 |
| 新手上路 发帖 6 积分 14 | |
|
系统提示:对不起,您最近 24 小时评分数超过 2 点 限制,请返回。
今天不能给大家的帖子一一评分了。 :) |
|
| 第14楼 lililulula | 发表于 2007-04-24 23:32 |
| 中级用户 发帖 138 积分 302 | |
|
呵呵 前面看到lxmxn兄还是铂金,一下子荣升斑竹,恭喜恭喜,还有就是bjsh兄终于修成正果,特来祝贺.
不过我来这里关键是学习的,所以特问有没有有关dir参数的贴子以供学习. |
|
| 第15楼 dikex | 发表于 2007-04-24 23:44 |
| 高级用户 发帖 366 积分 788 | |
Originally posted by bugmenot at 2007-4-24 08:35 AM: 修改一下使用findstr命令应该就可以了 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |