請問各位大大
如何用BAT批次檔寫一個判斷式?因為要透過AD Login Script派送順便依據電腦版本安裝特定軟體。
例如電腦有個Client.ini檔案,想要識別檔案內容的Version=11.1 版本字串,
當字串是11.1就自動執行\192.168.1.1\A.exe,
當字串是12.1就自動執行\192.168.1.1\B.exe,
當字串是13.1就自動執行\192.168.1.1\C.exe,以此內推。
謝謝各位大大。
隨便寫了一下,可符合你所要的需求~
@Echo Off
Findstr /I /P /C:"Version=11.1" D:\123.ini
If Errorlevel 1 Goto Old
If Errorlevel 0 Goto New
:New
cls
Echo This is New Version
Pause
Exit
:Old
cls
Echo This is Old Version
Pause
Exit
如果是多個條件的話,先假設你的.ini檔的內容非常單純,就是以下這樣做...懶人寫法...
@Echo Off
for /f "tokens=1" %%a in ('Findstr /I /P /C:"Version=" D:\123.ini') do (
set Version=%%a
)
If "%Version%" == "Version=11.1" Goto V11
If "%Version%" == "Version=12.1" Goto V12
If "%Version%" == "Version=13.1" Goto V13
Goto Error
:V11
Echo Version = 11.1
Pause
Exit
:V12
Echo Version = 12.1
Pause
Exit
:V13
Echo Version = 13.1
Pause
Exit
:Error
Echo Not Support
Pause
Exit
兩津勘吉的解法就已經可以解決問題了。我提供另外一種解法, 利用label的方法做switch case
原本的篩選是ini的每個設定都會設定為變數, 加上指定 version變數功能。
set 部分做法也可以直接用兩津勘吉的作法。
@echo off
FOR /F "delims=" %%A IN ('TYPE php.ini ^|FIND /V "[" ^|FIND "Version"') DO SET %%A
2>NUL CALL :v%version%
IF ERRORLEVEL 1 CALL :DEFAULT_CASE
goto :eof
:v1.1
echo 1.1
goto :eof
:v2.1
echo 2.1
goto :eof
:v3.1
echo 3.1
goto :eof
:DEFAULT_CASE
echo "default"
goto :eof