批处理文件中的嵌套IF语句

时间:2013-10-24 09:42:48

标签: batch-file if-statement nested

我正在尝试将一个批处理文件放在一起,该文件会复制几个文件并启动一个excel文件。我原来的批处理文件工作正常,但我修改它以尝试识别操作系统是32位还是64位,并相应地引用正确的文件夹。

步骤如下:

  1. 确定操作系统是否具有“Program Files(x86)”文件夹。如果是,则操作系统必须是64位。如果没有,则继续执行步骤5.

  2. 如果它有“Program Files(x86)”文件夹,则查看“c:\ Program files(x86)\ Auto-BF \”文件夹中是否有“installed.txt”文件/ p>

  3. 如果没有文件,请执行以下操作。

  4. a)在“%userprofile%\ MarketFeeder Pro 7 \ profiles”中创建“Auto-BF”文件夹 b)使用一对xcopy命令将“c:\ Program files(x86)\ Auto-BF”中的2个文件复制到这个新创建的“Auto-BF”文件夹中: xcopy“c:\ Program Files(x86)\ Auto-BF \ settings.ini”“%userprofile%\ MarketFeeder Pro 7 \ profiles \ Auto-BF”/ h / q / r / y xcopy“c:\ Program Files(x86)\ Auto-BF \ customcells.xml”“%userprofile%\ MarketFeeder Pro 7 \ profiles \ Auto-BF”/ h / q / r / y c)现在创建一个“installed.txt”文件并将其放在“”C:\ Program Files(x86)\ Auto-BF“文件夹中,以确认文件夹已创建且文件已被复制。 d)现在从“C:\ Program Files(x86)\ Auto-BF”文件夹中启动excel电子表格“abf.xlsx”,然后退出批处理文件。

    1. 如果“C:\ Program Files(x86)\ Auto-BF”文件夹中已存在“installed.txt”文件,则只需在同一文件夹“abf.xlsx”中启动Excel电子表格
    2. (对于32位系统,当“Program Files(x86)”不存在时) 5.检查“C:\ Program Files \ Auto-BF \”中是否有“installed.txt”文件

      1. 如果没有文件,请执行以下操作。
      2. a)在“%userprofile%\ MarketFeeder Pro 7 \ profiles”中创建“Auto-BF”文件夹 b)使用一对xcopy命令将“c:\ Program files \ Auto-BF”中的2个文件复制到这个新创建的“Auto-BF”文件夹中: xcopy“c:\ Program Files \ Auto-BF \ settings.ini”“%userprofile%\ MarketFeeder Pro 7 \ profiles \ Auto-BF”/ h / q / r / y xcopy“c:\ Program Files \ Auto-BF \ customcells.xml”“%userprofile%\ MarketFeeder Pro 7 \ profiles \ Auto-BF”/ h / q / r / y c)现在创建一个“installed.txt”文件并将其放在“”C:\ Program Files \ Auto-BF“文件夹中,以确认该文件夹已创建且文件已被复制。 d)现在从“C:\ Program Files \ Auto-BF”文件夹中启动excel电子表格“abf.xlsx”,然后退出批处理文件。

        1. 如果“C:\ Program Files \ Auto-BF”文件夹中已有“installed.txt”文件,则只需在同一文件夹“abf.xlsx”中启动Excel电子表格
        2. 好的,我希望这一点相对简单! : - )

          这是我已经创建的批处理文件,但有些东西不能正常工作....


          @echo off
          for /f "tokens=*" %%a in ('dir /b /s "%windir%\system32\xcopy.exe"') do set path=%path%;%%~dpa
          
          IF EXIST "c:\Program Files (x86)\" (
          
          cd "c:\Program Files (x86)\Auto-BF\"
          IF EXIST "c:\Program Files (x86)\Auto-BF\installed.txt" START abf.xlsx 
          IF EXIST "c:\Program Files (x86)\Auto-BF\installed.txt" EXIT
          ) ELSE (
          
          REM create Auto-BF Folder
          cd %userprofile%\MarketFeeder Pro 7\profiles\
          md Auto-BF
          
          REM move files
          xcopy "c:\Program Files (x86)\Auto-BF\settings.ini" "%userprofile%\MarketFeeder Pro 7\profiles\Auto-BF" /h /q /r /y
          xcopy "c:\Program Files (x86)\Auto-BF\customcells.xml" "%userprofile%\MarketFeeder Pro 7\profiles\Auto-BF" /h /q /r /y
          
          cd c:\Program Files (x86)\Auto-BF\
          
          ECHO Auto-BF successfully installed >installed.txt
          
          START abf.xlsx
          EXIT )
          
          IF EXIST "c:\Program Files (x86)\" (
          
          
          cd "c:\Program Files\Auto-BF\"
          IF EXIST "c:\Program Files\Auto-BF\installed.txt" START abf.xlsx 
          IF EXIST "c:\Program Files\Auto-BF\installed.txt" EXIT
          ) ELSE (
          
          REM create Auto-BF Folder
          cd %userprofile%\MarketFeeder Pro 7\profiles\
          md Auto-BF
          
          REM move files
          xcopy "c:\Program Files\Auto-BF\settings.ini" "%userprofile%\MarketFeeder Pro 7\profiles\Auto-BF" /h /q /r /y
          xcopy "c:\Program Files\Auto-BF\customcells.xml" "%userprofile%\MarketFeeder Pro 7\profiles\Auto-BF" /h /q /r /y
          
          cd c:\Program Files\Auto-BF\
          
          ECHO Auto-BF successfully installed >installed.txt
          
          START abf.xlsx
          
          EXIT )
          

1 个答案:

答案 0 :(得分:0)

你的两个IF构造都是一样的:

IF EXIST "c:\Program Files (x86)\" (

第二个应该是:

IF EXIST "c:\Program Files\" (