[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 14# 飛雪


    把你用if弄出来的两个贴上来看看,我帮你改成3个。

TOP

剛剛測試了一下,if居然是失敗的,真得丟臉了...

大神可否直接幫忙給一個if的辦法

先謝謝了,也藉此多跟大神學習

TOP

例如說我要判斷版本後運行 MicrosoftFixit50154.msi 或 MicrosoftFixit50416.msi 或 MicrosoftFixit50450.m ...
飛雪 发表于 2012-8-24 12:48


不知道行不行,试试看:
  1. @echo off&setlocal enabledelayedexpansion
  2. set v03=MicrosoftFixit50416.msi
  3. set v07=MicrosoftFixit50154.msi
  4. set v10=MicrosoftFixit50450.msi
  5. for %%a in ("11-%v03%" "12-%v07%" "14-%v10%") do (
  6.   for /f "tokens=1,2 delims=-" %%b in ("%%~a") do (
  7.     reg query HKLM\SOFTWARE\Microsoft\Office\%%b.0\Common\LanguageResources /v SKULanguage>nul 2>nul
  8.     if "!errorlevel!"=="0" set flag=1&start /wait "" "%%c"
  9.   )
  10. )
  11. if not defined flag echo 未安装 MS Office 2003、2007 或 2010
  12. pause
复制代码

TOP

回复 18# apang


您好,非常感謝您,經測試功能正常!!!

但還有一個小請求,就是當判斷為 2003、2007或2010時能否再多出一個 ECHO 說明現在安裝的版本

謝謝您!

TOP

回复 19# 飛雪

试试
  1. @echo off&setlocal enabledelayedexpansion
  2. set v03=11-2003-MicrosoftFixit50416.msi
  3. set v07=12-2007-MicrosoftFixit50154.msi
  4. set v10=14-2010-MicrosoftFixit50450.msi
  5. for %%a in ("%v03%" "%v07%" "%v10%") do (
  6.   for /f "tokens=1,2* delims=-" %%b in ("%%~a") do (
  7.     reg query HKLM\SOFTWARE\Microsoft\Office\%%b.0\Common\LanguageResources /v SKULanguage>nul 2>nul
  8.     if "!errorlevel!"=="0" (
  9.       set flag=1&echo 版本 MS Office %%c&start /wait "" "%%d"
  10.     )
  11.   )
  12. )
  13. if not defined flag echo 未安装 MS Office 2003、2007 或 2010
  14. pause
复制代码

TOP

本帖最后由 飛雪 于 2012-8-26 10:27 编辑

回复 20# apang


非常感謝您,經測試完全正常,再次感謝大神!

如果大神您方便的話,可否好心幫忙加入註解? 非常謝謝您

我的批處理實在還需要加強...

TOP

回复 20# apang


抱歉,如果我想在 MicrosoftFixit50154.msi 後面加參數,例如 /s,批處理應當加到哪邊? 謝謝您!

TOP

回复 22# 飛雪

set flag=1&echo 版本 MS Office %%c&start /wait "" "%%d" /s

TOP

回复 23# apang


真的非常感謝您!

TOP

返回列表