@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를 위해) of wireshark는 프로그램이 이미 프로그램 파일에 있는지 여부를 확인하는 데 사용됩니다.)배치 스크립트는
메신저 각 프로그램의 레지스트리를 가져 오는 대신 커다란 프로그램을 사용자 지정 Windows 이미지에 적용하기위한 기초 자료로 사용합니다.
주된 문제는 cmd로 돌아가는 오류입니다. 산술이 적용되지 않은 문제가 있었는데, var에서 빼낸 다음 에코가 반영되지 않았습니다.
누군가가 설치 섹션에서 사용 된 루프에 대한 대안 솔루션을 갖고 있다면 감사하겠습니다.
이고 잉크는/s 자동 매개 변수를 갖습니다.
나는 설치 후에도 너무 깨끗하게하기 위해 옵션을 추가 할 예정이었습니다.
세 파일과 그 목적을 설명해야 할 수 있습니다.현재 디렉터리에 .loc 파일의 이름이 있는지 확인하는 것이 설치되어 있는지 확인하지 않는 것 같습니다. – Compo
코드 블록 안에 있습니다. 지연된 확장을 사용해야합니다. – Squashman