无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6437|回复: 17
打印 上一主题 下一主题

[已解决] 求一个批处理命令

[复制链接]
跳转到指定楼层
1#
发表于 2017-12-13 18:44:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 有阴也有阳 于 2017-12-14 10:02 编辑

        求一个“一条批处理命令执行完后,如果执行成功就停止,不成功就继续执行下一条批处理命令”的批处理命令,

        例如:

        这条批处理命令:

cscript.exe "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus

        它执行完后,如果成功,就停下来,不再执行下面的批处理命令,假如不成功,就继续执行下面的批处理命令的批处理命令该如何写?

                                                                                                                                                                    谢谢!!!

        哈哈......,成功了,我是在用枚举法编写一个检查Office是否激活的批处理命令,要求当其中的一条批处理命令执行失败时就接着执行下一条命

令,如果成功就停止,并且要保持CMD窗口打开的状态,在命令后面加了一个&& pause命令:

cscript.exe "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus && pause

cscript.exe "C:\Program Files (x86)\Microsoft Office\Office16\OSPP.VBS" /dstatus && pause

cscript.exe "C:\Microsoft Office\Office16\OSPP.VBS" /dstatus && pause

cscript.exe "D:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus && pause

cscript.exe "D:\Program Files (x86)\Microsoft Office\Office16\OSPP.VBS" /dstatus && pause

cscript.exe "D:\Microsoft Office\Office16\OSPP.VBS" /dstatus && pause

......

        下面是效果图——执行到第4条命令:“cscript.exe "D:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus && pause

时批处理命令执行成功,就停了下来,不再执行后面的命令,并且保持CMD窗口打开的状态:




        感谢诸位网友的热心帮助,谢谢!!!

        特别鸣谢nttwqz网友,谢谢!!!




推荐
发表于 2017-12-16 12:37:38 | 只看该作者
用ftype查出office的正确目录再做激活更快些吧?

点评

没想到还有这一招……!  详情 回复 发表于 2017-12-17 22:23
回复

使用道具 举报

推荐
发表于 2017-12-15 11:28:58 | 只看该作者
holley2008 发表于 2017-12-15 10:23
Program Files 对应 %ProgramFiles%
Program Files(x86)对应%ProgramFiles(x86)%
批处理判断平台并运行 ...

看到你说搜索,我想了下,直接搜索文件路径再看状态也有效!
  1. @echo off
  2. set "strname=OSPP.VBS"
  3. echo. =======================================
  4. echo. 正在查询office激活状态,请稍候......
  5. echo. =======================================
  6. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  7.   if exist %%a:\ (
  8.     pushd %%a:\
  9.     for /r %%b in (*%strname%) do (
  10.       if /i "%%~nxb" equ "%strname%" (
  11.         cscript.exe "%%b" /dstatus
  12.       )
  13.     )
  14.     popd
  15.   )
  16. )
复制代码

点评

谢谢!!!亲测可用!!! 此批处理写得简单、明了,直指关键要害!写得好!!!  详情 回复 发表于 2017-12-16 15:00
回复

使用道具 举报

2#
发表于 2017-12-13 19:13:43 | 只看该作者
本帖最后由 tools241 于 2017-12-13 19:15 编辑

cscript.exe "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus
if  "%errorlevel%"=="0" goto end
...
...
...

:end


或试:
cscript.exe "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus
if  not "%errorlevel%"=="1" goto end
...
...
...

:end
回复

使用道具 举报

3#
发表于 2017-12-13 19:14:10 | 只看该作者
  1. if /? | findstr ERRORLEVEL
复制代码
回复

使用道具 举报

4#
发表于 2017-12-13 19:14:42 | 只看该作者
  1. &&
复制代码

点评

可是,楼主说的是“成功了停止,失败了继续”  详情 回复 发表于 2017-12-13 20:26
回复

使用道具 举报

5#
发表于 2017-12-13 19:44:27 | 只看该作者
..... && exit

点评

不成功才停止。。。要用goto  发表于 2017-12-13 20:11
回复

使用道具 举报

6#
发表于 2017-12-13 20:26:40 | 只看该作者

可是,楼主说的是“成功了停止,失败了继续”
回复

使用道具 举报

7#
发表于 2017-12-13 20:46:04 | 只看该作者
本帖最后由 kingshui 于 2017-12-13 20:48 编辑

用&& 和||处理。。。

[code]cscript.exe "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus && goto eof || goto next
回复

使用道具 举报

8#
发表于 2017-12-14 15:30:51 | 只看该作者
不用整这么多,把Program Files换成环境变量

点评

你是说从A——Z,搜索Program Files文件夹?  详情 回复 发表于 2017-12-14 15:54
回复

使用道具 举报

9#
 楼主| 发表于 2017-12-14 15:54:28 | 只看该作者
holley2008 发表于 2017-12-14 15:30
不用整这么多,把Program Files换成环境变量

你是说从A——Z,搜索Program Files文件夹?

点评

Program Files 对应 %ProgramFiles% Program Files(x86)对应%ProgramFiles(x86)% 批处理判断平台并运行对应脚本即可 另office的版本不同,路径也不一致,可以将office(x)目录的x设置成变量,来打造通用脚本。  详情 回复 发表于 2017-12-15 10:23
Program Files 对应 %ProgramFiles% Program Files(x86)对应%ProgramFiles(x86)% 批处理判断平台并运行对应脚本即可 另office的版本不同,路径也不一致,可以将office(x)目录的x设置成变量,来打造通用脚本。  详情 回复 发表于 2017-12-15 10:23
回复

使用道具 举报

10#
发表于 2017-12-15 10:23:07 | 只看该作者
有阴也有阳 发表于 2017-12-14 15:54
你是说从A——Z,搜索Program Files文件夹?

Program Files 对应 %ProgramFiles%
Program Files(x86)对应%ProgramFiles(x86)%
批处理判断平台并运行对应脚本即可
另office的版本不同,路径也不一致,可以将office(x)目录的x设置成变量,来打造通用脚本。

点评

看到你说搜索,我想了下,直接搜索文件路径再看状态也有效!  详情 回复 发表于 2017-12-15 11:28
回复

使用道具 举报

11#
发表于 2017-12-15 10:23:11 | 只看该作者
有阴也有阳 发表于 2017-12-14 15:54
你是说从A——Z,搜索Program Files文件夹?

Program Files 对应 %ProgramFiles%
Program Files(x86)对应%ProgramFiles(x86)%
批处理判断平台并运行对应脚本即可
另office的版本不同,路径也不一致,可以将office(x)目录的x设置成变量,来打造通用脚本。
回复

使用道具 举报

14#
 楼主| 发表于 2017-12-16 15:00:51 | 只看该作者
本帖最后由 有阴也有阳 于 2017-12-16 15:34 编辑
holley2008 发表于 2017-12-15 11:28
看到你说搜索,我想了下,直接搜索文件路径再看状态也有效!


        谢谢!!!亲测可用!!!

        此批处理写得简单、明了,直指关键、要害!写得好!!!

        但检测完后会出现三个相同的检测结果,都是同一个Office的,第一、第三个是英文的,第二个是中文的,不知是什么原因:







        对了,这个批处理在执行完后CMD的窗口会自动关闭,让人看不清检测结果,我在其最后添加了一个pause命令,就能保持CMD窗口打开了:

@echo off
set "strname=OSPP.VBS"
echo. =======================================
echo. 正在查询office激活状态,请稍候......
echo. =======================================
for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  if exist %%a:\ (
    pushd %%a:\
    for /r %%b in (*%strname%) do (
      if /i "%%~nxb" equ "%strname%" (
        cscript.exe "%%b" /dstatus
      )
    )
    popd
  )
)
pause


回复

使用道具 举报

15#
发表于 2017-12-17 22:23:54 来自手机 | 只看该作者
kingshui 发表于 2017-12-16 12:37
用ftype查出office的正确目录再做激活更快些吧?

没想到还有这一招……!

点评

我也是去年要查java版本的时候想到的这个法子  详情 回复 发表于 2017-12-18 17:59
回复

使用道具 举报

16#
发表于 2017-12-18 17:59:22 | 只看该作者
nttwqz 发表于 2017-12-17 22:23
没想到还有这一招……!

我也是去年要查java版本的时候想到的这个法子
回复

使用道具 举报

17#
发表于 2017-12-19 15:07:42 | 只看该作者
批处理有大用处啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-27 10:12

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表