中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-28 04:27
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教一个批处理!谢谢! 查看 1,699 回复 15
楼 主 请教一个批处理!谢谢! 发表于 2008-09-07 17:50 ·  中国 江苏 南通 联通
新手上路
积分 18
发帖 7
注册 2008-09-07 16:45
17年会员
UID 125053
性别 男
状态 离线
我的一个测试文件夹里有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

其实就是请教高手上面“判断指定文件在不在”的批处理!

谢谢!!
2 发表于 2008-09-07 18:03 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
19年会员
UID 79003
性别 男
状态 离线
if /?
S smile 微笑,L love 爱,O optimism 乐观,R relax 放松,E enthusiasm 热情...Slore
3 发表于 2008-09-07 18:22 ·  中国 江苏 南通 联通
新手上路
积分 18
发帖 7
注册 2008-09-07 16:45
17年会员
UID 125053
性别 男
状态 离线
if比较指令的用法可以说得具体点吗??
谢谢!学习中!
4 发表于 2008-09-07 18:22 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@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"
)
)
5 发表于 2008-09-07 18:23 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
其实
del 5.txt
ren *.txt 5.txt
可以合并成一句
move /y *.txt 5.txt
6 发表于 2008-09-07 18:37 ·  中国 江苏 南通 联通
新手上路
积分 18
发帖 7
注册 2008-09-07 16:45
17年会员
UID 125053
性别 男
状态 离线
先谢了!不过4楼的方法我试了!不行!!
7 发表于 2008-09-07 18:45 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
Q: 为什么不行啊?
A: 去电线杆上找个老军医的手机,他是专治+包治这个的。如果治疗周期较长,建议列出你的测试环境、测试用例、出错信息,供大家帮助你解决问题。
8 发表于 2008-09-07 19:11 ·  中国 江苏 南通 联通
新手上路
积分 18
发帖 7
注册 2008-09-07 16:45
17年会员
UID 125053
性别 男
状态 离线
呵呵!!我的现状如下



我会复制出去修改3个之中随意一个文件,然后以不同文件名放进来,这时我会根据文件类型点击其中一个bat



我就是要把3个bat合并!问题是我放入新的exe文件,exe文件替换是达到目的了!
可是sys和dll他自动会删除了!我就是请教如何加个比较指令!就是比较PcHide.sys(还有2个类似)在不在,在的话就执行删了PcHide.sys,把文件下新的 随意名.sys 重命名为PcHide.sys
9 发表于 2008-09-07 19:21 ·  中国 福建 漳州 联通
中级用户
★★
积分 228
发帖 125
注册 2008-08-25 19:17
17年会员
UID 124135
性别 男
状态 离线
实在难于看懂楼主要表达的意思啊。真够汗
10 发表于 2008-09-07 19:30 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@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"
)
)
11 发表于 2008-09-07 19:33 ·  中国 福建 漳州 联通
中级用户
★★
积分 228
发帖 125
注册 2008-08-25 19:17
17年会员
UID 124135
性别 男
状态 离线
用楼上的hat兄的办法便可,看了半天终于理解你的意思..
他里面用for循环查找你这个文件夹是否有多余的.xx文件,如果找到就执行你要的效果.所以在你运行BAT的时候是不会乱删除的,也就是不会一打开不问青红皂白的就先把你的xx.dll或者xx.exe就删除了.用楼上的代码就成..
楼上的代码就是三个BAT合并成一个效果啦.当然你也可以分开来执行,呵呵.
12 发表于 2008-09-07 19:42 ·  中国 江苏 南通 联通
新手上路
积分 18
发帖 7
注册 2008-09-07 16:45
17年会员
UID 125053
性别 男
状态 离线
汗!我相信对论坛的高手来说是小问题!!可是上面的答案还是不能达到我的目的呀!!
麻烦请加我qq:627892948 语音下!
谢谢!
13 测试完成 发表于 2008-09-07 21:04 ·  中国 福建 漳州 联通
中级用户
★★
积分 228
发帖 125
注册 2008-08-25 19:17
17年会员
UID 124135
性别 男
状态 离线
@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命令需要路径的问题.
14 发表于 2008-09-07 21:29 ·  中国 江苏 南通 联通
新手上路
积分 18
发帖 7
注册 2008-09-07 16:45
17年会员
UID 125053
性别 男
状态 离线
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 ...



谢谢你!!终于解决!!
15 Re 13楼 发表于 2008-09-07 21:34 ·  中国 重庆 九龙坡区 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
我是在当前路径下测试的,确实忽略了这个问题,多谢指正。
论坛跳转: