检查文件存在条件,如* visio * .exe

时间:2014-09-29 03:47:51

标签: batch-file

我想知道如何检查文件是否存在于服务器上我的登录脚本的帖子主题。

我的想法是检查安装在用户笔记本电脑上的visio,但有许多版本的visio。

我们拥有2007年,2010年和2013年的visio x86或x64版本。

我该如何检查?这是我的剧本。

*if exist "%PROGRAMFILES(X86)%\Microsoft Office\Office13\VISIO.EXE" Action
if exist "%PROGRAMFILES%\Microsoft Office\Office13\VISIO.EXE" Action

if exist "%PROGRAMFILES(X86)%\Microsoft Office\Office14\VISIO.EXE" Action
if exist "%PROGRAMFILES%\Microsoft Office\Office14\VISIO.EXE Action

if exist "%PROGRAMFILES(X86)%\Microsoft Office\Office15\VISIO.EXE" Action
if exist "%PROGRAMFILES%\Microsoft Office\Office15\VISIO.EXE" Action*

我认为这是丑陋的编码。我怎样才能缩短它:

if exist %systemdrive%\*\VISIO.EXE Action

2 个答案:

答案 0 :(得分:0)

在Windows下的目录或路径中搜索文件(按模式)的命令称为where

这(全部在一行上)将返回找到的路径并设置errorlevel 0/1:

where "%PROGRAMFILES(X86)%\Microsoft Office\Office13;
      %PROGRAMFILES(X86)%\Microsoft Office\Office14;
      %PROGRAMFILES(X86)%\Microsoft Office\Office15:VISIO.EXE"

您可以使用" for"实际处理结果的技巧(但更容易在PATH中指定目录并只使用" visio.exe")

for /f "delims=" %a in ^
    ('where "C:\Program Files\Java\jdk1.7.0\bin;c:\Program Files\Java\jdk1.8.0\bin:java.exe"')^
    do @set JAVA=%a

此示例将选择找到的最后一个java。

答案 1 :(得分:0)

您可以使用reg query命令查询HKEY_CLASSES_ROOT\Visio.Application,如果存在,则安装visio。

我没有安装visio,所以对我来说它给出了:

C:\>reg query HKEY_CLASSES_ROOT\Visio.Application
ERROR: The system was unable to find the specified registry key or value.

但是,我确实安装了Word,所以我得到了:

C:\>reg query HKEY_CLASSES_ROOT\Word.Application

HKEY_CLASSES_ROOT\Word.Application
    (Default)    REG_SZ    Microsoft Word Application

HKEY_CLASSES_ROOT\Word.Application\CLSID
HKEY_CLASSES_ROOT\Word.Application\CurVer