BATCH:读取文件和静默安装应用程序,但有错误

时间:2013-11-12 08:55:34

标签: batch-file if-statement for-loop errorlevel

您好我正在尝试制作一个静默安装某些应用程序的脚本。 我需要读取一个名为list.txt的文本文件。在文件中有我将默默安装的应用程序,每行一个。但是如果程序行没有安装文件,我不需要尝试静默安装。并保存未安装在其他文本文件中的应用程序的名称。这就是我遇到的问题,我无法使用%errorlevel%,!errorlevel!或错误级别1。

那是scrpit:

@ECHO OFF
SetLocal EnableDelayedExpansion EnableExtensions
set count=0

FOR /F "delims=·" %%A IN (list.txt) DO (
          IF !count! EQU 0 (
                findstr /I /C:"thunderbird" %%A 
                IF !errorlevel! == 0 (
                      ECHO Installing [ %%A ]
                      ::"%%A" /S
                      set count=1
                )
          )
          IF !count! EQU 0 (
                findstr /I /C:"firefox" %%A
                IF !errorlevel! == 0 (
                      ECHO Installing[ %%A ]
                      ::"%%A" /S
                      set count=1
                  )          

          )
          IF !count! EQU 0 (
                ECHO %%A >> temp.txt 2>NUL

          )
          set count=0


)

list.txt的内容是:

Thunderbird 24.0.1.exe
Cantinstall.exe
Firefox 25.exe

%errorlevel%和!errorlevel!永远是1

解决方案归功于MC ND的评论:

@ECHO OFF
SetLocal EnableDelayedExpansion EnableExtensions
set count=0

FOR /F "delims=·" %%A IN (lista.txt) DO (
          IF !count! EQU 0 (
                echo Installing [ %%A ] | findstr /I /C:"thunderbird"
                IF not errorlevel 1 (
                      ::"%%A" /S
                      set count=1
                )
          )
          IF !count! EQU 0 (
                echo Installing [ %%A ] | findstr /I /C:"firefox"
                IF not errorlevel 1 (
                      ::"%%A" /S
                      set count=1
                  )          

          )
          IF !count! EQU 0 (
                ECHO %%A >> temp.txt 2>NUL

          )
          set count=0


)

输出temp.txt:

cantinstall.exe

0 个答案:

没有答案