@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を確認します(バックエラーアウトは、CMDに)プログラムが既にプログラムファイル内に存在するかどうかを確認するのに使用されるwiresharkの)。バッチスクリプトは、
imこれは、プログラムごとにレジストリを取得するのではなく、大量のプログラムをカスタムWindowsイメージに適用するためのベースとして使用します。
主な問題は、cmdに戻ってエラーが発生しました。算術が適用されなかった問題が発生しました。varから引き算すると、次のエコーは反映されませんでした。
誰かが、インストールセクションで使用されているループの代替ソリューションを持っていれば、それはわかります。
であり、インクは/ sサイレントパラメータを有する。
私はそれもインストール後にそれ自身の後にクリーンアップするためのオプションを追加しようとしていた。
3つのファイルとその目的を説明する必要がある場合があります。現在のディレクトリに.locファイルの名前が存在するかどうかのチェックだけがインストールされているかどうかは確認されません。 – Compo
コードブロック内にあります。遅延拡張を使用する必要があります。 – Squashman