关于.bat批处理的问题。菜鸟再次求救!

zlzch 2012-01-09 09:51:17
首先先说一下需求。
公司要求我写一个脚本,脚本的开头是检测系统是否安装了7z,并且设置了环境变量(脚本后面会用到7z进行解压)。

现在的问题是这样,如果用.bat脚本获取环境变量的去判断是否设置了7z的话。万一7z的安装路径为:"c:/8-zip",或者其他的名字,那环境变量肯定就不包含7-zip这些关键字。所以这个不妥。

我的思路是这样,写一个bat脚本

call 7z (如果未设置环境变量,就会提示'7z'不是内部或外部命令.....)

然后它会继续往下面的脚本执行下去。下面要用的7z的脚本就悲催了。。。

如果判断注册表是否安装了7z的话,又怕安装是安装了。但环境变量没有设置。悲催。很纠结,公司要求,木有办法!我是搞java的,非让我写脚本...

判断注册表也有个问题,万一我用的7z是从别的机拷过来直接用的,注册表肯定是没信息的...就算环境变量里有,也未必叫7-zip,烦死了


有没有高手可以加一个判断(本人刚学bat两天,菜鸟)

if call 7z 如果调用7z命令错误就停止往下执行,并且给出提示

Thank you!
...全文
103 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
码农首席 2012-01-11
  • 打赏
  • 举报
回复
这个批处理的结构最好是像楼上那样使用goto了...
事实上虽然goto类语句在编程中被严格限制使用,但在批处理中却太常用了...
ljc007 2012-01-11
  • 打赏
  • 举报
回复
[code=BatchFile]@echo off
call 7z
if %errorlevel% neq 0 (
goto :end
)
echo hello world

:end
[/code]
zlzch 2012-01-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 s11ss 的回复:]
call 7z
if %errorlevel%==0 (echo 找到了) else echo 没找到
[/Quote]

提示是有了,但脚本依然会往下执行!这样肯定不行了!
s11ss 2012-01-10
  • 打赏
  • 举报
回复
call 7z
if %errorlevel%==0 (echo 找到了) else echo 没找到
窗外雨潇潇 2012-01-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zlzch 的回复:]
引用 2 楼 s11ss 的回复:
call 7z
if %errorlevel%==0 (echo 找到了) else echo 没找到


提示是有了,但脚本依然会往下执行!这样肯定不行了!
[/Quote]
使用goto语句试一下:

call 7z
if not errorlevel 1 goto goon
goto end

:goon
...

:end
Ghostbaby 2012-01-10
  • 打赏
  • 举报
回复
WARA 不用环境变量 直接调用目录下的一个EXE程序就可以
而且不大 你可以直接打在你包里面

9,506

社区成员

发帖
与我相关
我的任务
社区描述
Windows专区 安全技术/病毒
社区管理员
  • 安全技术/病毒社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧