![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-04 10:59 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请教各位高手,这样的怎么实现? |
| 可打印版本 2,069 / 28 |
| 第1楼 chkau | 发表于 2007-04-18 16:32 |
| 初级用户 发帖 47 积分 101 | |
|
请教各位高手,这样的怎么实现? 我现在有D,E两个分区,E盘里有个文件夹,我想在D盘下写一个批处理,运行后自动对比D盘的剩余空间和E盘那个文件夹大小,如果D盘剩余空间大于E盘那个文件夹1G,就自动执行1.BAT,否则就自动删除掉D盘上访问时间最早的1个文件夹,再对比,如果空间还不够就再删1个访问时间最早的文件夹,直到D盘剩余空间大于E盘那个文件夹1G为止,然后自动执行1.BAT
请问各位大大,这个命令怎么写啊? |
|
| 第2楼 chkau | 发表于 2007-04-18 16:35 |
| 初级用户 发帖 47 积分 101 | |
|
我语言表达能力不好.....这篇字看的我自己头都晕了,整理一下,是这个意思
我需要从我的E盘复制某文件夹到本地D盘根目录,前提是复制完后D盘剩余空间不小于1GB,如果剩余空间不足无法复制则依次删除D盘下访问时间最早的文件夹,直到能够复制目标文件夹为止... 大概就是这样,不知道批处理如何实现 |
|
| 第3楼 chkau | 发表于 2007-04-19 02:03 |
| 初级用户 发帖 47 积分 101 | |
|
@echo off
for /f "tokens=2 delims=录可" %%i in ('dir /ad /-c d:\') do @echo %%i >free.txt for /f "tokens=2 delims=件" %%b in ('dir /ad /-c e:\1') do @echo %%b>1.txt for /f "tokens=1 delims= " %%a in (1.txt) do @echo %%a >lose.txt @del 1.txt 这样做了我就分别提取了D盘的剩余空间和E盘的1文件夹的大小,但是接下来怎么把这两个数字进行对比? |
|
| 第4楼 bjsh | 发表于 2007-04-19 02:47 |
| 银牌会员 发帖 621 积分 2,000 | |
|
[ Last edited by bjsh on 2007-4-18 at 01:50 PM ] |
|
| 第5楼 zhoushijay | 发表于 2007-04-19 03:15 |
| 高级用户 发帖 375 积分 845 | |
|
吃好饭再来解决 ^^
|
|
| 第6楼 chkau | 发表于 2007-04-19 03:39 |
| 初级用户 发帖 47 积分 101 | |
|
发现一个问题,在DOS下dir文件夹只能查看到该文件夹所含文件的总大小,看不到文件夹总大小,有什么方法解决吗?
|
|
| 第7楼 bowman | 发表于 2007-04-19 06:08 |
| 新手上路 发帖 6 积分 16 | |
Originally posted by chkau at 2007-4-18 02:39 PM: dir dirpath /a/s/-c 倒数第2行显示文件夹大小 |
|
| 第8楼 zhoushijay | 发表于 2007-04-19 06:18 |
| 高级用户 发帖 375 积分 845 | |
|
VBS版 呵呵,基本上能达到要求了,只是如果文件夹删光了还没有1G的话会有点小错误(我测试的时候是20G) 保存为 *.vbs 使用的时候请把f/ghost 改为E盘的那个文件夹 [ Last edited by zhoushijay on 2007-4-18 at 05:22 PM ] |
|
| 第9楼 bjsh | 发表于 2007-04-19 07:30 |
| 银牌会员 发帖 621 积分 2,000 | |
|
纠正ls的一个小错误
说剩余空间-文件size 是否大于1G; 而非剩余空间是否大于1G; cmd /c dir /od /ad /b d:\>folder.txt 这个会有问题的; 首先如果 该盘为系统盘的话;很可能把隐藏的重要文件夹删除; 所以建议加上 -h 同时/od的排序是按生成时间排序的; 而lz要求的是最早的访问时间; 应该用wmic或/ta来解决这个问题; [ Last edited by bjsh on 2007-4-18 at 08:15 PM ] |
|
| 第10楼 bjsh | 发表于 2007-04-19 07:33 |
| 银牌会员 发帖 621 积分 2,000 | |
|
此题用批处理来写
关键在于 批处理 在处理大数字上有欠缺; 而且在取得文件夹大小上也有欠缺; 而vbs在这两方面要好的多; 不过并不说明批处理无法解决;只是麻烦了点; |
|
| 第11楼 bjsh | 发表于 2007-04-19 07:35 |
| 银牌会员 发帖 621 积分 2,000 | |
|
贴出批处理版的;加了些注释;
|
|
| 第12楼 bjsh | 发表于 2007-04-19 07:37 |
| 银牌会员 发帖 621 积分 2,000 | |
|
仅仅是数值的计算批处理就用了30行
而vbs只需要两行代码; [ Last edited by bjsh on 2007-4-18 at 06:38 PM ] |
|
| 第13楼 chkau | 发表于 2007-04-19 09:13 |
| 初级用户 发帖 47 积分 101 | |
|
首先非常感谢bjsh大哥
其次小弟再问一下,我运行这个命令输出的需要删除的文件夹和我dir /od /ta排列出最后一次访问时间最早的文件夹不一样呢? |
|
| 第14楼 chkau | 发表于 2007-04-19 09:19 |
| 初级用户 发帖 47 积分 101 | |
|
我的表达能力真是差......
估计bjsh大哥认为的是最早有访问记录的文件夹 而我想要表达的意思是上一次访问时间最早的文件夹 各位大哥...不好意思 |
|
| 第15楼 bjsh | 发表于 2007-04-19 09:37 |
| 银牌会员 发帖 621 积分 2,000 | |
|
那你dir /od /ta 后;
你是想删除第一个呢?还是想删除最后一个呢? |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |