帮我改写个简便bat批处理

来源:百度知道 编辑:UC知道 时间:2024/05/03 00:39:47
我有个bat批处理命令,想简化一下,那是最好用for命令简化的,但是不成功,所以找高手帮我一把~!大侠帮帮忙吧~!
我先拿出一部分重复的命令...中间部分省略...
@set disk4path=""

@cd /d c:
@if exist c:\PAL3A\movie\MOVIE.CPK (
@if not exist c:\PAL3A\PAL3A.dll @goto setdisk4path
)
@cd /d d:
@if exist d:\PAL3A\movie\MOVIE.CPK (
@if not exist d:\PAL3A\PAL3A.dll @goto setdisk4path
)
@cd /d e:
@if exist e:\PAL3A\movie\MOVIE.CPK (
@if not exist e:\PAL3A\PAL3A.dll @goto setdisk4path
)
...
...
@cd /d z:
@if exist z:\PAL3A\movie\MOVIE.CPK (
@if not exist z:\PAL3A\PAL3A.dll @goto setdisk4path
)
@echo 发生错误:没有载入镜像!返回重新游戏
@pause

其实上面的命令就是检测盘内有没有\PAL3A\movie\MOVIE.CPK文件和\PAL3A\PAL3A.dll文件来判断到指定的盘,而我就是要找到MOVIE.CPK文件和找不到PAL3A.dll文件确认我要的盘...
======================================
另外问问怎样判断指定文件的体积大小?
举一例,abc.dll文件是否小于238MB?
还有...

在批处理开始处写
@echo off
就可以不用每句之前加@了
上面的语句可以这么写:
for %%a in (c,d,e,z) do (
if exist %%a:\PAL3A\movie\MOVIE.CPK if not exist %%a:\PAL3A\PAL3A.dll @goto setdisk4path goto:setdisk4path
)
注意中间一句比较长,是没有换行的

返回体积同样是for语句
for %%a in ("c:\PAL3A\PAL3A.dll") do echo %%~za
其中的%%~za就是文件大小,单位是字节(byte)
如果要判断是否大于238M的话就要先转化为一样的单位
不过批处理中除法是只取整的,如果把文件大小变为M会造成不准确,所以先把238M变为以字节为单位
set /a size=238*1024*1024
然后再比较
for %%a in ("c:\PAL3A\PAL3A.dll") do (
if %%~za GTR %size% (
echo 文件大于238M
) else echo 文件小于等于238M
)
其中GTR是if语句的比较字符,代表大于(greater)
关于if语句的其他比较字符可以在命令行下输入if /?看if的帮助

获取盘的卷标用命令vol
比如vol c:,就会回显c盘的卷标和序列号

写个给你学习吧。
::全盘找文件
@echo off&setlocal EnableDelayedExpansion
echo.&echo 输入查找内容
set /p file1=[格式:qq.exe]:
title 正在查找中...
for /f %%i in ('wmic logicaldisk get deviceid^|find ":"