![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 02:27 |
共 48,037 主题排行 / 350,122 发帖 / 今日 2 篇 / 48,250 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 查找文件并操作(查看路径、复制、删除).bat (9.5更新) |
| 可打印版本 7,839 / 23 |
| 第1楼 vkill | 发表于 2006-08-31 14:02 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
查找文件并操作(查看路径、复制、删除).bat (9.5更新) *.bat
现在还有一个问题,源自 for /f "tokens=* delims= " %%a in (%dati%_9.txt) do (find %dati%_6.txt /v /i "%%a">>%dati%_5.txt) 这句,我存过滤的那文件有几行生成的查找文件就有几重复,这个怎么弄掉? 现在就想把恢复删除再重新弄下,搞的自动化点 [ Last edited by he200377 on 2006-9-6 at 02:52 ] |
|
| 第2楼 namejm | 发表于 2006-08-31 14:55 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
不错不错,比较有实用性。
当然,瑕疵也是有的,并且有些可能会导致很严重的后果: 1、对于每用set /p设置的变量,在接收用户的输入之前,都应该设置成空值,否则,下次再goto start回来之后,连续按几个回车键,将重复上次的操作,可能会导致用户数据的损失; 2、一旦要接收用户的输入,就应该有几句输入错误检测语句,对比较严重的输入错误进行检测,以防意外; 3、要随时注意对含空格字符串的处理;比如:copy %%i,%%i 的值就有可能存在空格,不用引号引起来是会出错的;for "delims=," %%i in (a.txt) 一句中似乎应该加一句 tokens=* 、del %%i 中用引号把 %%i 括起来……类似的地方还有好几处,请注意修改; 4、执行过程中,可能等待的时间较长,应该在屏幕上有所提示,无关的信息应该cls掉; 楼主如果能再完善一下的话,这个脚本就更好用了。 [ Last edited by namejm on 2006-8-31 at 15:00 ] |
|
| 第3楼 vkill | 发表于 2006-08-31 15:13 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
谢谢楼上的指导
第1条 我确实没有想到,这个应该注意 第2条 我想应该还要屏蔽 , | & 和 空格,因为我试了只要在输入状态下只要输入这几个字符就强制退出了,这个是懒没有加上过滤,哎 第3条 恩,这样改好点 第4条 我认为执行很快的,就2s左右,就没有写上提示 楼上帮我改该~呵呵,先谢谢了,我看看具体哪些地方我没有注意到 [ Last edited by he200377 on 2006-8-31 at 15:15 ] |
|
| 第4楼 namejm | 发表于 2006-08-31 17:14 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
Originally posted by he200377 at 2006-8-31 15:13: 其实还有几个地方要修改的:比如第二句的 cmd /c 就显得多余了;若要吹毛求疵的话,还是可以找到一些的。 |
|
| 第5楼 namejm | 发表于 2006-08-31 17:22 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
来一个修改版本,只修改了前面提到的大部分问题,并把容易引起误解的提示语句稍作修改,输入错误检测那一段要考虑的情况比较多,暂时没时间去完善;查询的时候添加什么提示信息,楼主可以自行决定,我就不去添加了;楼主可以对比一下前后的代码,在需要完善的地方继续修改:
[ Last edited by namejm on 2006-8-31 at 17:27 ] |
|
| 第6楼 vkill | 发表于 2006-08-31 18:11 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
谢谢,我回去再看看
|
|
| 第7楼 vkill | 发表于 2006-09-01 13:23 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
做个记号
是因为用到了 call :标号 参数 附件 做恢复删除的时候想到的.rar (871 bytes) |
|
| 第8楼 namejm | 发表于 2006-09-01 17:17 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
Re he200377顶楼:
你现在的代码存在一个致命的错误:dir /a /s /b "%lj%" |find "%name%" >%dati%.txt,这条语句是无法实现查询的,所以我把相关的语句修改了一下,实现了你想要的完全匹配查找的意图: 至于不搜索脚本文件所在的目录,暂时还没想到高效的办法,变通的做法是从查找到的结果中把脚本文件所在目录的记录删除。 其他的小问题还是存在的:比如,每次查询之前,都要把日志内容清空,免得和上一次的结果混在一起。 |
|
| 第9楼 namejm | 发表于 2006-09-01 17:18 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
Originally posted by he200377 at 2006-9-1 13:23: 没明白你发这个帖子的意图,请说明一下好吗? |
|
| 第10楼 vkill | 发表于 2006-09-01 17:29 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
比如,每次查询之前,都要把日志内容清空,免得和上一次的结果混在一起
每次生成的文件是已日期+时间(精确到到s)来命名的,所以就算中间中断也没有关系的,原理上说是不会生成一个同名文件的 [ Last edited by he200377 on 2006-9-1 at 17:39 ] |
|
| 第11楼 vkill | 发表于 2006-09-01 17:31 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
Originally posted by namejm at 2006-9-1 17:18: 只是在测试的时候想到了用就试着用了下 |
|
| 第12楼 vkill | 发表于 2006-09-01 17:39 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
不明白这个? "%%~nxi" 那到是文件名,查了下以前的帖子 ~dp是路径,我想这个就是文件名了
//试了下明白了 [ Last edited by he200377 on 2006-9-1 at 17:48 ] |
|
| 第13楼 namejm | 发表于 2006-09-01 22:09 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
Originally posted by he200377 at 2006-9-1 17:29: 你还是漏掉了一个非常重要的文件:fc_name.txt。这个文件你漏掉的话,麻烦就大了——如果你分几次查询不同的文件,然后直接就选了删除,嘿嘿,你就等着哭鼻子吧:P |
|
| 第14楼 namejm | 发表于 2006-09-01 22:13 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
全盘查找指定文件的功能,我头两天弄了一个,发出来给你借鉴一下吧。
[ Last edited by namejm on 2006-9-1 at 23:08 ] |
|
| 第15楼 vkill | 发表于 2006-09-03 01:37 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
Originally posted by namejm at 2006-9-1 22:13: |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |