中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
<<   [1] [2]  >>   >
作者:
标题: 请教一个批处理!谢谢! 上一主题 | 下一主题
qdjlc
新手上路





积分 18
发帖 7
注册 2008-9-7
状态 离线
『楼 主』:  请教一个批处理!谢谢!

我的一个测试文件夹里有5.txt,6.exe,7.dll 3个文件 我不定时会放进来哪种类型文件! 假如我放进来个8.txt的话,用他替换掉5.txt 用批处理: del 5.txt 可以达到我的目的 ren *.txt 5.txt 假如我放进来个4.exe的话,用他替换掉6.exe 用批处理: del 6.exe 可以达到我的目的 ren *.exe 6.exe 假如我放进来个9.dll的话,用他替换掉7.dll 用批处理: del 7.dll 可以达到我的目的 ren *.dll 7.dll 我想把3个bat和为一个bat: 判断有没有5.txt以外的txt文件,有就执行 没有就不执行x下面这2句 del 5.txt ren *.txt 5.txt 判断有没有6.exe以外的txt文件,有就执行 没有就不执行x下面这2句 del 6.exe ren *.exe 6.exe 判断有没有5.txt以外的txt文件,有就执行 没有就不执行x下面这2句 del 7.dll ren *.dll 7.dll 其实就是请教高手上面“判断指定文件在不在”的批处理! 谢谢!!


2008-9-7 17:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:  

if /?




S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
2008-9-7 18:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qdjlc
新手上路





积分 18
发帖 7
注册 2008-9-7
状态 离线
『第 3 楼』:  

if比较指令的用法可以说得具体点吗?? 谢谢!学习中!


2008-9-7 18:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  

@echo off
set SrcDir=C:\test
for /f "tokens=*" %%a in ('dir /b "%SrcDir%\*.txt"') do (
  if "%%a" neq "5.txt" (
    del "5.txt"
    ren "*.txt" "5.txt"
  )
)
for /f "tokens=*" %%a in ('dir /b "%SrcDir%\*.exe"') do (
  if "%%a" neq "6.exe" (
    del "6.exe"
    ren "*.exe" "6.exe"
  )
)
for /f "tokens=*" %%a in ('dir /b "%SrcDir%\*.dll"') do (
  if "%%a" neq "7.dll" (
    del "7.dll"
    ren "*.dll" "7.dll"
  )
)




2008-9-7 18:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  

其实 del 5.txt ren *.txt 5.txt 可以合并成一句 move /y *.txt 5.txt




2008-9-7 18:23
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qdjlc
新手上路





积分 18
发帖 7
注册 2008-9-7
状态 离线
『第 6 楼』:  

先谢了!不过4楼的方法我试了!不行!!


2008-9-7 18:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 7 楼』:  

Q: 为什么不行啊? A: 去电线杆上找个老军医的手机,他是专治+包治这个的。如果治疗周期较长,建议列出你的测试环境、测试用例、出错信息,供大家帮助你解决问题。




2008-9-7 18:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qdjlc
新手上路





积分 18
发帖 7
注册 2008-9-7
状态 离线
『第 8 楼』:  

呵呵!!我的现状如下 我会复制出去修改3个之中随意一个文件,然后以不同文件名放进来,这时我会根据文件类型点击其中一个bat 我就是要把3个bat合并!问题是我放入新的exe文件,exe文件替换是达到目的了! 可是sys和dll他自动会删除了!我就是请教如何加个比较指令!就是比较PcHide.sys(还有2个类似)在不在,在的话就执行删了PcHide.sys,把文件下新的 随意名.sys 重命名为PcHide.sys


2008-9-7 19:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hackate
中级用户





积分 228
发帖 125
注册 2008-8-25
状态 离线
『第 9 楼』:  

实在难于看懂楼主要表达的意思啊。真够汗


2008-9-7 19:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 10 楼』:  

@echo off
set SrcDir=C:\test
for /f "tokens=*" %%a in ('dir /b "%SrcDir%\*.sys"') do (
  if "%%a" neq "PcHide.sys" (
    del "PcHide.sys"
    ren "*.sys" "PcHide.sys"
  )
)
for /f "tokens=*" %%a in ('dir /b "%SrcDir%\*.exe"') do (
  if "%%a" neq "PcInit.exe" (
    del "PcInit.exe"
    ren "*.exe" "PcInit.exe"
  )
)
for /f "tokens=*" %%a in ('dir /b "%SrcDir%\*.dll"') do (
  if "%%a" neq "PcMain.dll" (
    del "PcMain.dll"
    ren "*.dll" "PcMain.dll"
  )
)




2008-9-7 19:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
hackate
中级用户





积分 228
发帖 125
注册 2008-8-25
状态 离线
『第 11 楼』:  

用楼上的hat兄的办法便可,看了半天终于理解你的意思.. 他里面用for循环查找你这个文件夹是否有多余的.xx文件,如果找到就执行你要的效果.所以在你运行BAT的时候是不会乱删除的,也就是不会一打开不问青红皂白的就先把你的xx.dll或者xx.exe就删除了.用楼上的代码就成.. 楼上的代码就是三个BAT合并成一个效果啦.当然你也可以分开来执行,呵呵.


2008-9-7 19:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qdjlc
新手上路





积分 18
发帖 7
注册 2008-9-7
状态 离线
『第 12 楼』:  

汗!我相信对论坛的高手来说是小问题!!可是上面的答案还是不能达到我的目的呀!! 麻烦请加我qq:627892948 语音下! 谢谢!


2008-9-7 19:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hackate
中级用户





积分 228
发帖 125
注册 2008-8-25
状态 离线
『第 13 楼』:  测试完成

@echo off set SrcDir=C:\test for /f "tokens=*" %%a in ('dir /b "%SrcDir%\*.sys"') do ( if "%%a" neq "PcHide.sys" ( del "%SrcDir%\PcHide.sys" ren "%SrcDir%\%%~nxa" "PcHide.sys" ) ) for /f "tokens=*" %%a in ('dir /b "%SrcDir%\*.exe"') do ( if "%%a" neq "PcInit.exe" ( del "%SrcDir%\PcInit.exe" ren "%SrcDir%\%%~nxa" "PcInit.exe" ) ) for /f "tokens=*" %%a in ('dir /b "%SrcDir%\*.dll"') do ( if "%%a" neq "PcMain.dll" ( del "%SrcDir%\PcMain.dll" ren "%SrcDir%\%%~nxa" "PcMain.dll" ) ) 刚Hat兄疏漏了del 和ren命令需要路径的问题.


2008-9-7 21:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qdjlc
新手上路





积分 18
发帖 7
注册 2008-9-7
状态 离线
『第 14 楼』:  

Originally posted by hackate at 2008-9-7 09:04 PM: @echo off set SrcDir=C:\test for /f "tokens=*" %%a in ('dir /b "%SrcDir%\*.sys"') do ( if "%%a" neq "PcHide.sys" ( del "%SrcDir%\PcHide.sys&qu ...
谢谢你!!终于解决!!


2008-9-7 21:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 15 楼』:  Re 13楼

我是在当前路径下测试的,确实忽略了这个问题,多谢指正。




2008-9-7 21:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
<<   [1] [2]  >>   >
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: