有阴也有阳 发表于 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网友,谢谢!!!




kingshui 发表于 2017-12-16 12:37:38

用ftype查出office的正确目录再做激活更快些吧?

holley2008 发表于 2017-12-15 11:28:58

holley2008 发表于 2017-12-15 10:23
Program Files 对应 %ProgramFiles%
Program Files(x86)对应%ProgramFiles(x86)%
批处理判断平台并运行 ...

看到你说搜索,我想了下,直接搜索文件路径再看状态也有效!
@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
)
)

tools241 发表于 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
ifnot "%errorlevel%"=="1" goto end
...
...
...

:end

slore 发表于 2017-12-13 19:14:10

if /? | findstr ERRORLEVEL

slore 发表于 2017-12-13 19:14:42

&&

nttwqz 发表于 2017-12-13 19:44:27

..... && exit

nttwqz 发表于 2017-12-13 20:26:40

slore 发表于 2017-12-13 19:14


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

kingshui 发表于 2017-12-13 20:46:04

本帖最后由 kingshui 于 2017-12-13 20:48 编辑

用&& 和||处理。。。

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

holley2008 发表于 2017-12-14 15:30:51

不用整这么多,把Program Files换成环境变量

有阴也有阳 发表于 2017-12-14 15:54:28

holley2008 发表于 2017-12-14 15:30
不用整这么多,把Program Files换成环境变量

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

holley2008 发表于 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设置成变量,来打造通用脚本。

holley2008 发表于 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设置成变量,来打造通用脚本。

有阴也有阳 发表于 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


nttwqz 发表于 2017-12-17 22:23:54

kingshui 发表于 2017-12-16 12:37
用ftype查出office的正确目录再做激活更快些吧?

没想到还有这一招……!

kingshui 发表于 2017-12-18 17:59:22

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

我也是去年要查java版本的时候想到的这个法子{:1_186:}

2011jiangli463 发表于 2017-12-19 15:07:42

批处理有大用处啊!
页: [1]
查看完整版本: 求一个批处理命令