求一个批处理命令
本帖最后由 有阴也有阳 于 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网友,谢谢!!!
用ftype查出office的正确目录再做激活更快些吧? 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: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 if /? | findstr ERRORLEVEL && ..... && exit slore 发表于 2017-12-13 19:14
可是,楼主说的是“成功了停止,失败了继续” 本帖最后由 kingshui 于 2017-12-13 20:48 编辑
用&& 和||处理。。。
cscript.exe "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus && goto eof || goto next 不用整这么多,把Program Files换成环境变量 holley2008 发表于 2017-12-14 15:30
不用整这么多,把Program Files换成环境变量
你是说从A——Z,搜索Program Files文件夹? 有阴也有阳 发表于 2017-12-14 15:54
你是说从A——Z,搜索Program Files文件夹?
Program Files 对应 %ProgramFiles%
Program Files(x86)对应%ProgramFiles(x86)%
批处理判断平台并运行对应脚本即可
另office的版本不同,路径也不一致,可以将office(x)目录的x设置成变量,来打造通用脚本。
有阴也有阳 发表于 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: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
kingshui 发表于 2017-12-16 12:37
用ftype查出office的正确目录再做激活更快些吧?
没想到还有这一招……! nttwqz 发表于 2017-12-17 22:23
没想到还有这一招……!
我也是去年要查java版本的时候想到的这个法子{:1_186:} 批处理有大用处啊!
页:
[1]