中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教各位高手,这样的怎么实现?
« [1] [2] »
作者:
标题: 请教各位高手,这样的怎么实现? 上一主题 | 下一主题
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 16 楼』:  

第一个,也就是应该是最少有人访问那个

2007-4-19 09:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 17 楼』:  

你试试这个
我修改过了;

  Quote:

  1. @echo off & setlocal enabledelayedexpansion
  2. :loop
  3. for /f %%i in ('wmic LOGICALDISK where "name='d:'" get freespace ^|more +1') do set "d_free=%%i"
  4. for /f "tokens=3" %%a in ('dir e:\某文件夹 /s /a ^| find "个文件"') do set "file_size=%%a" && set "file_size=!file_size:,=!"
  5. set "x=%d_free%"
  6. set "y=%file_size%"
  7. set "result="
  8. set "flag="
  9. call :c
  10. set "x=%result%"
  11. set "y=1073741824"
  12. set "result="
  13. set "flag="
  14. call :c
  15. if "%p%"=="1" 1.bat
  16. if "%p%"=="-1" for /f "delims=" %%A in ('dir /od /ta /b d:') do set "ear_folder=%%A" && goto jump
  17. :jump
  18. echo 访问时间最早的文件是 d:\%ear_folder% ;是否要删除 & pause
  19. rd /s /q d:\%ear_folder%
  20. goto loop
  21. :c
  22. if defined flag (set /a "next=%x:~-1%-1") else (set /a "next=%x:~-1%")
  23. set /a "last=%next%-%y:~-1%"
  24. set "t=%last%"
  25. if %last% geq 0 (set "flag=") else (set /a "last=10+%next%-%y:~-1%" & set "flag=flag")
  26. set "result=%last%%result%"
  27. set "x=%x:~0,-1%"
  28. set "y=%y:~0,-1%"
  29. if "%x%"=="" if not "%y%"=="" set /a "p=-1" & goto exit
  30. if "%x%"=="" if %t% lss 0 set /a "p=-1" & goto exit
  31. if "%y%"=="" if not "%x%"=="" set "y=0" && set /a "p=1"
  32. if "%y%"=="" if "%x%"=="" if %t% geq 0 set /a "p=1" && goto exit
  33. goto c
  34. :exit
         BJSH发表于:  2007-04-18  20:38

[ Last edited by bjsh on 2007-4-18 at 08:49 PM ]

   此帖被 +7 点积分        点击查看详情   
评分人:【 htysm 分数: +5  时间:2007-4-20 00:06
评分人:【 chkau 分数: +2  时间:2007-4-26 16:18


2007-4-19 09:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 18 楼』:  

测试成功!非常感谢!!!

2007-4-19 22:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
htysm
高级用户




积分 866
发帖 415
注册 2005-12-4
状态 离线
『第 19 楼』:  

看得眼花,但是还是要加分。^O^



欢迎你到批处理爱好者联盟QQ群:18023953
2007-4-20 00:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 20 楼』:  

再请问一下bjsh大哥,我想在本地计算机自动以其他用户身份执行这个批处理,有办法实现吗?
runas要手动去输入密码的

2007-4-21 23:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 21 楼』:  

大哥们帮看看啊,别沉了

2007-4-22 02:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 22 楼』:  

BJSH大哥,有了个疑难问题啊,我今天用下那个代码,%A赋值出来不管怎么搞都是为空,也就是说一直提醒我删D:\,而不是D:\访问最早的文件夹,而我把那两行代码复制出来另外做个BAT,又能正确赋值,我想破了头也想不通是怎么回事,麻烦你帮我看一下啊,谢谢了

2007-4-24 12:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 23 楼』:  

你把16行的set "ear_folder=%%A"改为echo %%A & pause 测试下看看回显.

2007-4-24 12:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 24 楼』:  

忘记说了,我把1.bat改了个名字,试出来就是这个结果了,还有我在if "%p%"=="-1" for /f "delims=" %%A in ('dir /od /ta /ad /b d:\') do set "ear_folder=%%A" && goto jump
这一行里的dir后面加了/ad参数,我只想找到文件夹

还有我set "ear_folder=%%A"改为echo %%A & pause 后,还是提示我删除D:\

2007-4-24 13:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 25 楼』:  

我在cmd里面执行这个批处理>>1.txt
1.txt里面是这个
访问时间最早的文件是 d:\ ;是否要删除
请按任意键继续. . .

2007-4-24 13:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 26 楼』:  

我发现个问题
if "%p%"=="-1" for /f "delims=" %%A in ('dir /od /ta /b d:') do set "ear_folder=%%A" && goto jump
这一行里那个d:后面要加一个\,否则如果该批处理在D盘里面某个文件夹下面的话,dir出来的结果会是当前文件夹里的文件列表,而不是D盘根目录里的

2007-4-24 13:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 27 楼』:  

BJSH大哥,我好像发现问题了,这个脚本就是在找不到1.bat的情况下出的错,如果能找到1.bat或者是D盘剩余空间比要对比的文件夹大不了1G,都不会出错
也就是说在%P%的判定的时候出的问题,附作用
帮我看看是吗?谢谢啊^^BJSH大哥

2007-4-24 13:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 28 楼』:  

是的;
能自己找到问题的所在;对你会有很大的提高啊!

就是在d盘剩余空间大于对比文件1G且找不到1.bat的情况下;
会出现问题
if "%p%"=="1" 1.bat
if "%p%"=="-1" for /f "delims=" %%A in ('dir /od /ta /b d:') do set "ear_folder=%%A" && goto jump
:jump
echo 访问时间最早的文件是 d:\%ear_folder% ;是否要删除 & pause
rd /s /q d:\%ear_folder%

%p%==1了但是因为没有1.bat所以就直接跳到了jump标签处;
而且因为一开始D盘的剩余空间就大于对比文件1G;
因此%P% 没有等于过 -1
因此%ear_folder%没有定义过;
因此为空;
所以提示删除 d:\%ear_folder%时会提示删除 d:\

如果开始D盘剩余空间比要对比的文件夹大不了1G
则 if "%p%"=="-1"至少被循环了一次;%ear_folder%也就有了定义;因此就不会出错;


解决办法就是:

保证1.bat存在;
或这改写

if "%p%"=="1" 1.bat
这句中的1.bat为你的要执行bat文件名即可

2007-4-26 12:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chkau
初级用户





积分 101
发帖 47
注册 2007-4-18
状态 离线
『第 29 楼』:  

全托你的福^^我会不断努力提高的,BJSH大哥不要嫌我麻烦啊

2007-4-26 15:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: