@echo off
Setlocal enableextensions EnableDelayedExpansion
REM %%~pI - expands %I to a path only
REM %%~nI - expands %I to a file name only
REM %%~xI - expands %I to a file extension only
REM %%~fI - expands %I to a fully qualified path name
cls
set "var="
set /a total=0
set setupLocation=%SYSTEMDRIVE%\setup\
set installer=*.lnk
for %%s in ("%setupLocation%%installer%") do (
set /a total+=1
)
echo.
echo %total% Programs to be installed:
echo.
set /a count=0
for %%I in ("%setupLocation%%installer%") do (
set currentInstall=%%~nI
echo %currentInstall%
for %%s in ("%setupLocation%*.exe") do (
SET var=%%s
SET var|FINDSTR /b "var="|FINDSTR /i %currentInstall% >nul
IF ERRORLEVEL 1 (echo.>nul) ELSE (for /f "delims=" %%i in ('echo %%s') do set Program[%count%]=%%~nI)
)
for %%s in ("%setupLocation%*.lnk") do (
SET var=%%s
SET var|FINDSTR /b "var="|FINDSTR /i %currentInstall% >nul
IF ERRORLEVEL 1 (echo.>nul) ELSE (for /f "delims=" %%i in ('echo %%s') do set File[%count%]=%%i)
echo !File[%count%]!
)
for %%s in ("%setupLocation%*.loc") do (
SET var=%%s
SET var|FINDSTR /b "var="|FINDSTR /i %currentInstall% >nul
IF ERRORLEVEL 1 (echo.>nul) ELSE (for /f "delims=" %%i in ('type %%s') do set Dir[%count%]=%%i)
echo !Dir[%count%]!
)
set /a count=%count%+1
echo %count%
)
echo.
pause
for /F "tokens=2 delims==" %%s in ('set Program[') do (
echo %%s
set /a counter+=1
)
echo test %counter%
:loop
cls
if %counter% EQU 0 goto end
for /l %%n in (0,1,%counter%) do (
if exist !Dir[%%n]! (
echo !File[%%n]! Already Installed.
SET /A counter=%counter%-1
pause
if %counter% EQU 0 goto end
echo %counter%
) else (
echo.
echo Installing !Program[%%n]! & echo.
echo ******************************************************************************* & echo.
echo Install Location: !Dir[%%n]! & echo.
echo Setup Location: !File[%%n]! & echo.
start "" /w /b !File[%%n]!
)
SET /A counter=%counter%-1
echo %counter% Programs to be installed.
)
goto loop
:end
echo Everything already installed.
pause
它將檢查根目錄C:\設置\爲3個文件,爲:批次腳本自動執行無聲安裝(錯誤出回CMD)
nmap.lnk
nmap.exe
nmap.loc
wireshark.lnk
wireshark.exe
wireshark.loc
(包含默認安裝目錄wirehark用於檢查程序是否已經存在於程序文件目錄中。)
即時通訊使用此作爲基礎,將大量程序整合到自定義窗口圖像中,而不是爲每個程序獲取註冊表。
主要問題是它錯誤返回cmd,我有問題算術不適用,因爲我從var中減去,下一個回聲沒有反映。
如果有人有安裝部分中使用的循環的替代解決方案,將不勝感激。
並且墨水將具有無聲參數。
我打算在安裝之後爲它自己清理後自行添加選項。
你可能需要解釋你的三個文件及其目的。似乎沒有檢查是否安裝了任何內容,只需檢查當前目錄中是否存在.loc文件的名稱。 – Compo
您位於代碼塊內。您需要使用延遲擴展。 – Squashman