ISO erstellen mit OSCDIMG und meinem Script [HowTo]
- Holgi
- Guru

- Beiträge: 3976
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 523 Mal
- Danke erhalten: 816 Mal
- Gender:
ISO erstellen mit OSCDIMG und meinem Script [HowTo]
viele von uns hier erstellen/verändern gerne mal das Windows 10/11 Installationsmedium.
Z.B. durch Austausch/Löschen von Dateien, oder durch das Einbringen zusätzlicher Dateien (autounattend.xml, $OEM$ Ordner).
Beispiel:
viewtopic.php?t=30604
Wenn man das nicht mit einem ISO Tool macht, sondern durch Extraktion der ISO-Datei auf die Festplatte, dann muss man anschließend den Extraktionsordner wieder zu einer ISO "zusammensetzen". Dafür benötigt man das Tool von Microsoft mit dem Namen OSCDIMG(.exe), welches man früher (und auch noch heute) aus dem Windows ADK bekommt.
Mein Script holt sich das Tool per Winget, wenn es noch nicht auf eurer Festplatte ist.
Der Ablauf ist weitestgehend selbsterklärend. Hier einige Bildschirmfotos:
oscdimg.cmd
Viel Spaß. Und wie immer gilt: Kritiken und Verbesserungsvorschläge immer gerne willkommen.
Z.B. durch Austausch/Löschen von Dateien, oder durch das Einbringen zusätzlicher Dateien (autounattend.xml, $OEM$ Ordner).
Beispiel:
viewtopic.php?t=30604
Wenn man das nicht mit einem ISO Tool macht, sondern durch Extraktion der ISO-Datei auf die Festplatte, dann muss man anschließend den Extraktionsordner wieder zu einer ISO "zusammensetzen". Dafür benötigt man das Tool von Microsoft mit dem Namen OSCDIMG(.exe), welches man früher (und auch noch heute) aus dem Windows ADK bekommt.
Mein Script holt sich das Tool per Winget, wenn es noch nicht auf eurer Festplatte ist.
Der Ablauf ist weitestgehend selbsterklärend. Hier einige Bildschirmfotos:
oscdimg.cmd
Code: Alles auswählen
@echo off
setlocal EnableExtensions EnableDelayedExpansion
chcp 65001 >nul
title Windows ISO mit OSCDIMG erstellen
:: ------------------------------------------------------------
:: 1) OSCDIMG finden oder installieren
:: ------------------------------------------------------------
call :FindOscdimg
if defined OSCDIMG_EXE goto AskSrcIso
echo OSCDIMG wurde nicht gefunden.
echo Es wird jetzt per WinGet installiert ...
echo.
where winget >nul 2>nul
if errorlevel 1 (
echo FEHLER: winget wurde nicht gefunden.
echo Bitte installiere zuerst den App Installer bzw. aktiviere WinGet.
pause >nul
goto End
)
winget install -e --id Microsoft.OSCDIMG -s winget --accept-package-agreements --accept-source-agreements
if errorlevel 1 (
echo.
echo FEHLER: Die Installation von OSCDIMG ist fehlgeschlagen.
pause >nul
goto End
)
echo.
echo Suche OSCDIMG nach der Installation erneut ...
call :FindOscdimg
if not defined OSCDIMG_EXE (
echo FEHLER: OSCDIMG konnte nach der Installation nicht gefunden werden.
echo Hinweis: Shell ggf. neu starten und Skript erneut ausfuehren.
pause >nul
goto End
)
:: ------------------------------------------------------------
:: Eingaben
:: ------------------------------------------------------------
:AskSrcIso
cls
echo \\!//
echo (o o)
echo -------------------------------oOOo-(_)-oOOo-------------------------------
echo.
echo Gefunden:
echo OSCDIMG = "%OSCDIMG_EXE%"
echo.
set "SRCISO="
set /p "SRCISO=Pfad zur vorhandenen Windows-ISO (z.B. C:\ISO\Windows11.iso): "
if not defined SRCISO (
echo FEHLER: Kein Pfad zur vorhandenen ISO angegeben.
pause >nul
goto AskSrcIso
)
for %%I in ("%SRCISO%") do (
set "SRCISO=%%~fI"
set "SRCISONAME=%%~nxI"
set "SRCISOBASENAME=%%~nI"
)
if not exist "%SRCISO%" (
echo FEHLER: Die angegebene ISO wurde nicht gefunden.
echo "%SRCISO%"
pause >nul
goto AskSrcIso
)
goto AskVmName
:AskVmName
cls
echo Gefunden:
echo OSCDIMG = "%OSCDIMG_EXE%"
echo Quell-ISO = "%SRCISO%"
echo.
set "VMName="
set /p "VMName=Geben Sie der neuen ISO einen Namen (ohne .iso, z.B. Windows11Pro): "
if not defined VMName (
echo FEHLER: Kein ISO-Name angegeben.
pause >nul
goto AskVmName
)
call :ValidateIsoName "%VMName%"
if errorlevel 1 goto AskVmName
if /I "%VMName%"=="%SRCISOBASENAME%" (
echo FEHLER: Der neue ISO-Name darf nicht dem Namen der vorhandenen ISO entsprechen.
echo Vorhandene ISO : "%SRCISONAME%"
echo Neue ISO : "%VMName%.iso"
pause >nul
goto AskVmName
)
goto AskOutDir
:AskOutDir
cls
echo Gefunden:
echo OSCDIMG = "%OSCDIMG_EXE%"
echo Quell-ISO = "%SRCISO%"
echo Neue ISO = "%VMName%.iso"
echo.
set "OUTDIR="
set /p "OUTDIR=Zielordner fuer die neue ISO [Leer = aktueller Ordner]: "
if not defined OUTDIR set "OUTDIR=%~dp0"
for %%I in ("%OUTDIR%") do set "OUTDIR=%%~fI"
if not exist "%OUTDIR%" (
echo Zielordner wird erstellt ...
md "%OUTDIR%" 2>nul
if errorlevel 1 (
echo FEHLER: Zielordner konnte nicht erstellt werden.
pause >nul
goto AskOutDir
)
)
call :BuildIsoFile
if /I "%ISOFILE%"=="%SRCISO%" (
echo FEHLER: Die neue ISO wuerde die Quell-ISO ueberschreiben.
echo Quelle: "%SRCISO%"
echo Ziel : "%ISOFILE%"
pause >nul
goto AskVmName
)
if exist "%ISOFILE%" (
echo.
echo Die neue ISO existiert bereits:
echo "%ISOFILE%"
echo.
echo [N] Neuen Namen waehlen
echo [E] Ersetzen
echo [A] Abbrechen
choice /C NEA /N /M "Bitte waehlen Sie [N/E/A]: "
if errorlevel 3 (
echo Vorgang wurde abgebrochen.
pause >nul
goto AskVmName
)
if errorlevel 2 (
echo Vorhandene ISO wird geloescht ...
del /f /q "%ISOFILE%" >nul 2>nul
if exist "%ISOFILE%" (
echo FEHLER: Die vorhandene ISO konnte nicht geloescht werden.
pause >nul
goto AskVmName
)
) else (
goto AskVmName
)
)
goto AskExtractPath
:AskExtractPath
cls
echo Gefunden:
echo OSCDIMG = "%OSCDIMG_EXE%"
echo Quell-ISO = "%SRCISO%"
echo Neue ISO = "%ISOFILE%"
echo.
set "ISO="
set /p "ISO=Pfad zum Entpacken der Windows-Installationsdateien (z.B. C:\ISO\Win11): "
if not defined ISO (
echo FEHLER: Kein Entpackpfad angegeben.
pause >nul
goto AskExtractPath
)
for %%I in ("%ISO%") do set "ISO=%%~fI"
if not exist "%ISO%" (
echo Entpackordner wird erstellt ...
md "%ISO%" 2>nul
if errorlevel 1 (
echo FEHLER: Entpackordner konnte nicht erstellt werden.
pause >nul
goto AskExtractPath
)
)
set "DIRCOUNT=0"
for /f %%A in ('dir /a /b "%ISO%" 2^>nul ^| find /c /v ""') do set "DIRCOUNT=%%A"
if not "%DIRCOUNT%"=="0" (
echo.
echo Der Entpackordner ist nicht leer:
echo "%ISO%"
echo.
echo [L] Leeren
echo [B] Behalten
echo [A] Abbrechen
choice /C LBA /N /M "Bitte waehlen Sie [L/B/A]: "
if errorlevel 3 (
echo Vorgang wurde abgebrochen.
pause >nul
goto AskExtractPath
)
if errorlevel 2 (
echo Vorhandene Dateien bleiben erhalten.
) else (
echo Entpackordner wird geleert ...
call :ClearFolder "%ISO%"
if errorlevel 1 (
echo FEHLER: Entpackordner konnte nicht vollstaendig geleert werden.
pause >nul
goto AskExtractPath
)
)
)
goto ShowSummary
:: ------------------------------------------------------------
:: Zusammenfassung
:: ------------------------------------------------------------
:ShowSummary
cls
echo ********************************************************************
echo.
echo Quell-ISO : "%SRCISO%"
echo Entpacken : "%ISO%"
echo Neue ISO : "%ISOFILE%"
echo Tool : "%OSCDIMG_EXE%"
echo.
echo ********************************************************************
echo.
:: ------------------------------------------------------------
:: 2) ISO mounten und entpacken
:: ------------------------------------------------------------
echo ISO wird gemountet ...
set "ISODRIVE="
set "ROBOLOG=%TEMP%\CreateISO_Robocopy.log"
for /f "usebackq delims=" %%D in (`powershell -NoProfile -Command "$p = [Environment]::GetEnvironmentVariable('SRCISO'); $img = Mount-DiskImage -ImagePath $p -PassThru; ($img | Get-Volume).DriveLetter"`) do (
set "ISODRIVE=%%D"
)
if not defined ISODRIVE (
echo FEHLER: Die ISO konnte nicht gemountet werden.
pause >nul
goto End
)
set "ISODRIVE=%ISODRIVE%:"
echo ISO gemountet als Laufwerk %ISODRIVE%
if not exist "%ISODRIVE%\setup.exe" (
echo FEHLER: Das gemountete ISO-Laufwerk ist nicht wie erwartet lesbar.
echo Erwartete Datei nicht gefunden: "%ISODRIVE%\setup.exe"
powershell -NoProfile -Command "$p = [Environment]::GetEnvironmentVariable('SRCISO'); Dismount-DiskImage -ImagePath $p" >nul 2>nul
pause >nul
goto End
)
echo.
echo Dateien werden entpackt, bitte warten ...
echo Robocopy-Protokoll: "%ROBOLOG%"
echo.
del "%ROBOLOG%" /f /q >nul 2>nul
robocopy "%ISODRIVE%\." "%ISO%" *.* /E /R:1 /W:1 /XJ /TEE /LOG:"%ROBOLOG%"
set "ROBOCODE=%ERRORLEVEL%"
echo.
echo ISO wird wieder ausgehaengt ...
powershell -NoProfile -Command "$p = [Environment]::GetEnvironmentVariable('SRCISO'); Dismount-DiskImage -ImagePath $p" >nul 2>nul
if %ROBOCODE% GEQ 8 (
echo.
echo FEHLER: Beim Kopieren der Dateien aus der ISO ist ein Fehler aufgetreten.
echo Robocopy-Fehlercode: %ROBOCODE%
echo Siehe Protokoll:
echo "%ROBOLOG%"
echo.
pause >nul
goto End
)
:: ------------------------------------------------------------
:: 3) Plausibilitaetspruefungen
:: ------------------------------------------------------------
if not exist "%ISO%\efi\microsoft\boot\memtest.efi" (
echo FEHLER: Die Windows-Installationsdateien scheinen unvollstaendig zu sein.
echo Erwartete Datei fehlt:
echo "%ISO%\efi\microsoft\boot\memtest.efi"
pause >nul
goto AskExtractPath
)
if not exist "%ISO%\boot\etfsboot.com" (
echo FEHLER: Bootdatei fuer BIOS fehlt:
echo "%ISO%\boot\etfsboot.com"
pause >nul
goto AskExtractPath
)
if not exist "%ISO%\efi\microsoft\boot\efisys.bin" if not exist "%ISO%\efi\microsoft\boot\efisys_noprompt.bin" (
echo FEHLER: UEFI-Bootdatei fehlt:
echo "%ISO%\efi\microsoft\boot\efisys.bin"
echo oder
echo "%ISO%\efi\microsoft\boot\efisys_noprompt.bin"
pause >nul
goto AskExtractPath
)
:: ------------------------------------------------------------
:: 4) Optional: noprompt-Dateien aktivieren
:: ------------------------------------------------------------
if exist "%ISO%\efi\microsoft\boot\cdboot_noprompt.efi" (
if not exist "%ISO%\efi\microsoft\boot\cdboot-prompt.efi" (
echo Benenne UEFI-Bootdateien fuer "no prompt" um ...
ren "%ISO%\efi\microsoft\boot\cdboot.efi" "cdboot-prompt.efi" >nul 2>nul
ren "%ISO%\efi\microsoft\boot\cdboot_noprompt.efi" "cdboot.efi" >nul 2>nul
)
)
if exist "%ISO%\efi\microsoft\boot\efisys_noprompt.bin" (
if not exist "%ISO%\efi\microsoft\boot\efisys_prompt.bin" (
ren "%ISO%\efi\microsoft\boot\efisys.bin" "efisys_prompt.bin" >nul 2>nul
ren "%ISO%\efi\microsoft\boot\efisys_noprompt.bin" "efisys.bin" >nul 2>nul
)
)
cls
echo.
echo ============================================================================
echo.
echo Die Installationsdateien sind jetzt entpackt und vorbereitet.
echo.
echo Sie koennen nun manuelle Anpassungen vornehmen, z.B.:
echo.
echo - Treiber hinzufuegen
echo - autounattend.xml oder unattend.xml einfuegen
echo - Dateien austauschen oder Skripte ergaenzen
echo - Images mit DISM bearbeiten
echo.
echo Entpackter Ordner:
echo "%ISO%"
echo.
echo Wenn Sie mit allen Anpassungen fertig sind, geben Sie bitte zur
echo Sicherheit exakt folgende Freigabe ein:
echo.
echo JETZT ISO BAUEN
echo.
echo Nur dann wird die ISO-Erstellung fortgesetzt.
echo.
echo ============================================================================
:WaitForContinue
set "CONTINUECODE="
set /p "CONTINUECODE=Freigabe eingeben: "
if /I "%CONTINUECODE%"=="JETZT ISO BAUEN" goto ContinueIsoBuild
echo.
echo Falsche Eingabe. Das Skript wird noch nicht fortgesetzt.
echo Bitte geben Sie exakt ein:
echo JETZT ISO BAUEN
echo.
goto WaitForContinue
:ContinueIsoBuild
echo.
echo Erstelle ISO, bitte warten ...
echo.
:: ------------------------------------------------------------
:: 5) ISO erstellen
:: ------------------------------------------------------------
"%OSCDIMG_EXE%" -m -o -u2 -udfver102 -bootdata:2#p0,e,b"%ISO%\boot\etfsboot.com"#pEF,e,b"%ISO%\efi\microsoft\boot\efisys.bin" "%ISO%" "%ISOFILE%"
if errorlevel 1 (
echo.
echo FEHLER: Die ISO konnte nicht erstellt werden.
pause >nul
goto End
)
echo.
echo Fertig.
echo ISO erfolgreich erstellt:
echo "%ISOFILE%"
echo.
pause
goto End
:: ------------------------------------------------------------
:: Unterprogramme
:: ------------------------------------------------------------
:BuildIsoFile
if "%OUTDIR:~-1%"=="\" (
set "ISOFILE=%OUTDIR%%VMName%.iso"
) else (
set "ISOFILE=%OUTDIR%\%VMName%.iso"
)
exit /b 0
:ValidateIsoName
set "CHECKNAME=%~1"
if not defined CHECKNAME (
echo FEHLER: Kein ISO-Name angegeben.
pause >nul
exit /b 1
)
set "PS_NAME=%CHECKNAME%"
powershell -NoProfile -Command ^
"$n = [Environment]::GetEnvironmentVariable('PS_NAME');" ^
"if ([string]::IsNullOrWhiteSpace($n)) { exit 1 }" ^
"if ($n.Trim() -ne $n) { exit 1 }" ^
"if ($n -in '.', '..') { exit 1 }" ^
"if ($n -match '[\\/:*?""<>|]') { exit 1 }" ^
"$reserved = 'CON','PRN','AUX','NUL','COM1','COM2','COM3','COM4','COM5','COM6','COM7','COM8','COM9','LPT1','LPT2','LPT3','LPT4','LPT5','LPT6','LPT7','LPT8','LPT9';" ^
"if ($reserved -contains $n.ToUpperInvariant()) { exit 1 }" ^
"exit 0"
if errorlevel 1 (
echo FEHLER: Der ISO-Name ist ungueltig.
echo.
echo Nicht erlaubt:
echo - leerer Name
echo - fuehrende oder abschliessende Leerzeichen
echo - . oder ..
echo - Zeichen \ / : * ? ^" ^< ^> ^|
echo - reservierte Namen wie CON, PRN, AUX, NUL, COM1, LPT1
pause >nul
exit /b 1
)
exit /b 0
:ClearFolder
set "TARGETFOLDER=%~1"
if "%TARGETFOLDER%"=="" exit /b 1
if not exist "%TARGETFOLDER%\" exit /b 1
if /I "%TARGETFOLDER%"=="C:\" exit /b 1
if /I "%TARGETFOLDER%"=="C:" exit /b 1
if /I "%TARGETFOLDER%"=="D:\" exit /b 1
if /I "%TARGETFOLDER%"=="D:" exit /b 1
if /I "%TARGETFOLDER%"=="%SystemDrive%\" exit /b 1
if /I "%TARGETFOLDER%"=="%SystemDrive%" exit /b 1
del /f /s /q "%TARGETFOLDER%\*" >nul 2>nul
for /d %%D in ("%TARGETFOLDER%\*") do rd /s /q "%%~fD" >nul 2>nul
set "LEFTCOUNT=0"
for /f %%A in ('dir /a /b "%TARGETFOLDER%" 2^>nul ^| find /c /v ""') do set "LEFTCOUNT=%%A"
if not "%LEFTCOUNT%"=="0" exit /b 1
exit /b 0
:FindOscdimg
set "OSCDIMG_EXE="
for /f "delims=" %%I in ('where oscdimg.exe 2^>nul') do (
if exist "%%~fI" (
set "OSCDIMG_EXE=%%~fI"
goto :eof
)
)
for /f "delims=" %%I in ('dir /b /s "%LOCALAPPDATA%\Microsoft\WinGet\Packages\oscdimg.exe" 2^>nul') do (
if exist "%%~fI" (
set "OSCDIMG_EXE=%%~fI"
goto :eof
)
)
for /f "delims=" %%I in ('dir /b /s "%LOCALAPPDATA%\Microsoft\WinGet\Links\oscdimg.exe" 2^>nul') do (
if exist "%%~fI" (
set "OSCDIMG_EXE=%%~fI"
goto :eof
)
)
for /f "delims=" %%I in ('dir /b /s "%ProgramFiles(x86)%\Windows Kits\*\Assessment and Deployment Kit\Deployment Tools\*\Oscdimg\oscdimg.exe" 2^>nul') do (
if exist "%%~fI" (
set "OSCDIMG_EXE=%%~fI"
goto :eof
)
)
for /f "delims=" %%I in ('dir /b /s "%ProgramFiles%\Windows Kits\*\Assessment and Deployment Kit\Deployment Tools\*\Oscdimg\oscdimg.exe" 2^>nul') do (
if exist "%%~fI" (
set "OSCDIMG_EXE=%%~fI"
goto :eof
)
)
goto :eof
:End
endlocal
exit /bDu hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Holgi am 06.04.2026, 11:23, insgesamt 1-mal geändert.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
-
Tante Google
-
Gast2025
Re: ISO erstellen mit OSCDIMG und meinem Script [HowTo}
@OSCDIMG finden oder installieren
Fehler beim herunterladen:
Internetverbindung konnte nicht ermittelt werden
Bitte aktivieren Sie jetzt für den benoetigten Download die Netzwerkkarte
Online Modus:
Erneute Abfrage
OSCDIMG wurde erfolgreich heruntergeladen
Weiter im Offline Modus:
Sie koennen die Internetverbindung jetzt wieder trennen
Anmerkung:
Defender und Energieverwaltung koennen die Erstellung beeinflussen
Keine Administratorrechte ermittelt
Benöetigter Speicherplatz fuer die Erstellung der neuen ISO
@Verbesserungsvorschläge immer gerne willkommen.
Spitzenleistung Holgi
Danke
Fehler beim herunterladen:
Internetverbindung konnte nicht ermittelt werden
Bitte aktivieren Sie jetzt für den benoetigten Download die Netzwerkkarte
Online Modus:
Erneute Abfrage
OSCDIMG wurde erfolgreich heruntergeladen
Weiter im Offline Modus:
Sie koennen die Internetverbindung jetzt wieder trennen
Anmerkung:
Defender und Energieverwaltung koennen die Erstellung beeinflussen
Keine Administratorrechte ermittelt
Benöetigter Speicherplatz fuer die Erstellung der neuen ISO
@Verbesserungsvorschläge immer gerne willkommen.
Spitzenleistung Holgi
Danke
- Holgi
- Guru

- Beiträge: 3976
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 523 Mal
- Danke erhalten: 816 Mal
- Gender:
Re: ISO erstellen mit OSCDIMG und meinem Script [HowTo}
danke fürs Testen.Gast2025 hat geschrieben: 05.04.2026, 19:24 Internetverbindung konnte nicht ermittelt werden
...
Anmerkung:
Defender und Energieverwaltung koennen die Erstellung beeinflussen
Keine Administratorrechte ermittelt
Benöetigter Speicherplatz fuer die Erstellung der neuen ISO
...
Spitzenleistung Holgi![]()
Danke
Defender, Energieverwaltung und Administratorrechte habe ich jetzt mal mit aufgenommen.
Wie man das mit "Benöetigter Speicherplatz fuer die Erstellung der neuen ISO" hinbekommt, weiß ich ehrlich gesagt nicht.
Das müßte man vlt. mit Powershell berechnen. Aber was nimmt man als Grundlage? Die Größe des modifizierten Ordners mit den Installationsdateien? + Puffer?
Habt ihr evtl. eine Idee zur Umsetzung?
oscdimg2.cmd
Code kopieren, in Notepad einsetzen und mit ANSI als Codepage abspeichern
Code: Alles auswählen
@Echo off
cls
echo \\!//
echo ISO erstellen mit OSCDIMG (o o)
echo -------------------------------oOOo-(_)-oOOo-------------------------------
echo.
chcp 65001 >nul
:: Administratorrechte prüfen
net session >nul 2>&1
if %errorLevel% neq 0 (
echo Bitte fuhren Sie dieses Skript als Administrator aus!
pause
exit /b 1
)
setlocal EnableExtensions EnableDelayedExpansion
title Windows ISO mit OSCDIMG erstellen
:: ------------------------------------------------------------
:: 1) OSCDIMG finden oder installieren
:: ------------------------------------------------------------
call :FindOscdimg
if defined OSCDIMG_EXE goto AskSrcIso
echo OSCDIMG wurde nicht gefunden.
echo Es wird jetzt versucht, per WinGet zu installieren ...
echo.
where winget >nul 2>nul
if errorlevel 1 (
echo FEHLER: winget wurde nicht gefunden.
echo Bitte installiere zuerst den App Installer bzw. aktiviere WinGet.
pause >nul
goto End
)
echo Prüfe Internetverbindung...
rem 1) Erst prüfen, ob überhaupt eine Standardroute existiert
route print 0.0.0.0 | find "0.0.0.0" >nul
if errorlevel 1 (
echo Kein Netzwerkzugang
timeout /t 5 >nul
goto no_internet
)
rem 2) Echter Verbindungstest mit Timeout
ping 8.8.8.8 -n 1 -w 1500 >nul
if errorlevel 1 (
echo Kein Internetzugang
timeout /t 5 >nul
goto no_internet
)
rem 3) Optional: DNS separat prüfen
nslookup google.com 1.1.1.1 >nul 2>&1
if errorlevel 1 (
echo Internet OK, aber DNS Problem
timeout /t 5 >nul
goto no_internet
)
echo Internetverbindung vollständig OK
winget install -e --id Microsoft.OSCDIMG -s winget --accept-package-agreements --accept-source-agreements
if errorlevel 1 (
echo.
echo FEHLER: Die Installation von OSCDIMG ist fehlgeschlagen.
pause >nul
goto End
)
echo.
echo Suche OSCDIMG nach der Installation erneut ...
call :FindOscdimg
if not defined OSCDIMG_EXE (
echo FEHLER: OSCDIMG konnte nach der Installation nicht gefunden werden.
echo Hinweis: Shell ggf. neu starten und Skript erneut ausfuehren.
pause >nul
goto End
)
:: ------------------------------------------------------------
:: Eingaben
:: ------------------------------------------------------------
:AskSrcIso
cls
echo \\!//
echo ISO erstellen mit OSCDIMG (o o)
echo -------------------------------oOOo-(_)-oOOo-------------------------------
echo.
echo Gefunden:
echo OSCDIMG = "%OSCDIMG_EXE%"
echo.
set "SRCISO="
set /p "SRCISO=Pfad zur vorhandenen Windows-ISO (z.B. C:\ISO\Windows11.iso): "
if not defined SRCISO (
echo FEHLER: Kein Pfad zur vorhandenen ISO angegeben.
pause >nul
goto AskSrcIso
)
for %%I in ("%SRCISO%") do (
set "SRCISO=%%~fI"
set "SRCISONAME=%%~nxI"
set "SRCISOBASENAME=%%~nI"
)
if not exist "%SRCISO%" (
echo FEHLER: Die angegebene ISO wurde nicht gefunden.
echo "%SRCISO%"
pause >nul
goto AskSrcIso
)
goto AskVmName
:AskVmName
cls
echo Gefunden:
echo OSCDIMG = "%OSCDIMG_EXE%"
echo Quell-ISO = "%SRCISO%"
echo.
set "VMName="
set /p "VMName=Geben Sie der neuen ISO einen Namen (ohne .iso, z.B. Windows11Pro): "
if not defined VMName (
echo FEHLER: Kein ISO-Name angegeben.
pause >nul
goto AskVmName
)
call :ValidateIsoName "%VMName%"
if errorlevel 1 goto AskVmName
if /I "%VMName%"=="%SRCISOBASENAME%" (
echo FEHLER: Der neue ISO-Name darf nicht dem Namen der vorhandenen ISO entsprechen.
echo Vorhandene ISO : "%SRCISONAME%"
echo Neue ISO : "%VMName%.iso"
pause >nul
goto AskVmName
)
goto AskOutDir
:AskOutDir
cls
echo Gefunden:
echo OSCDIMG = "%OSCDIMG_EXE%"
echo Quell-ISO = "%SRCISO%"
echo Neue ISO = "%VMName%.iso"
echo.
set "OUTDIR="
set /p "OUTDIR=Zielordner fuer die neue ISO [Leer = aktueller Ordner]: "
if not defined OUTDIR set "OUTDIR=%~dp0"
for %%I in ("%OUTDIR%") do set "OUTDIR=%%~fI"
if not exist "%OUTDIR%" (
echo Zielordner wird erstellt ...
md "%OUTDIR%" 2>nul
if errorlevel 1 (
echo FEHLER: Zielordner konnte nicht erstellt werden.
pause >nul
goto AskOutDir
)
)
call :BuildIsoFile
if /I "%ISOFILE%"=="%SRCISO%" (
echo FEHLER: Die neue ISO wuerde die Quell-ISO ueberschreiben.
echo Quelle: "%SRCISO%"
echo Ziel : "%ISOFILE%"
pause >nul
goto AskVmName
)
if exist "%ISOFILE%" (
echo.
echo Die neue ISO existiert bereits:
echo "%ISOFILE%"
echo.
echo [N] Neuen Namen waehlen
echo [E] Ersetzen
echo [A] Abbrechen
choice /C NEA /N /M "Bitte waehlen Sie [N/E/A]: "
if errorlevel 3 (
echo Vorgang wurde abgebrochen.
pause >nul
goto AskVmName
)
if errorlevel 2 (
echo Vorhandene ISO wird geloescht ...
del /f /q "%ISOFILE%" >nul 2>nul
if exist "%ISOFILE%" (
echo FEHLER: Die vorhandene ISO konnte nicht geloescht werden.
pause >nul
goto AskVmName
)
) else (
goto AskVmName
)
)
goto AskExtractPath
:AskExtractPath
cls
echo Gefunden:
echo OSCDIMG = "%OSCDIMG_EXE%"
echo Quell-ISO = "%SRCISO%"
echo Neue ISO = "%ISOFILE%"
echo.
set "ISO="
set /p "ISO=Pfad zum Entpacken der Windows-Installationsdateien (z.B. C:\ISO\Win11): "
if not defined ISO (
echo FEHLER: Kein Entpackpfad angegeben.
pause >nul
goto AskExtractPath
)
for %%I in ("%ISO%") do set "ISO=%%~fI"
if not exist "%ISO%" (
echo Entpackordner wird erstellt ...
md "%ISO%" 2>nul
if errorlevel 1 (
echo FEHLER: Entpackordner konnte nicht erstellt werden.
pause >nul
goto AskExtractPath
)
)
set "DIRCOUNT=0"
for /f %%A in ('dir /a /b "%ISO%" 2^>nul ^| find /c /v ""') do set "DIRCOUNT=%%A"
if not "%DIRCOUNT%"=="0" (
echo.
echo Der Entpackordner ist nicht leer:
echo "%ISO%"
echo.
echo [L] Leeren
echo [B] Behalten
echo [A] Abbrechen
choice /C LBA /N /M "Bitte waehlen Sie [L/B/A]: "
if errorlevel 3 (
echo Vorgang wurde abgebrochen.
pause >nul
goto AskExtractPath
)
if errorlevel 2 (
echo Vorhandene Dateien bleiben erhalten.
) else (
echo Entpackordner wird geleert ...
call :ClearFolder "%ISO%"
if errorlevel 1 (
echo FEHLER: Entpackordner konnte nicht vollstaendig geleert werden.
pause >nul
goto AskExtractPath
)
)
)
goto ShowSummary
:: ------------------------------------------------------------
:: Zusammenfassung
:: ------------------------------------------------------------
:ShowSummary
cls
echo ********************************************************************
echo.
echo Quell-ISO : "%SRCISO%"
echo Entpacken : "%ISO%"
echo Neue ISO : "%ISOFILE%"
echo Tool : "%OSCDIMG_EXE%"
echo.
echo ********************************************************************
echo.
:: ------------------------------------------------------------
:: 2) ISO mounten und entpacken
:: ------------------------------------------------------------
echo ISO wird gemountet ...
set "ISODRIVE="
set "ROBOLOG=%TEMP%\CreateISO_Robocopy.log"
for /f "usebackq delims=" %%D in (`powershell -NoProfile -Command "$p = [Environment]::GetEnvironmentVariable('SRCISO'); $img = Mount-DiskImage -ImagePath $p -PassThru; ($img | Get-Volume).DriveLetter"`) do (
set "ISODRIVE=%%D"
)
if not defined ISODRIVE (
echo FEHLER: Die ISO konnte nicht gemountet werden.
pause >nul
goto End
)
set "ISODRIVE=%ISODRIVE%:"
echo ISO gemountet als Laufwerk %ISODRIVE%
if not exist "%ISODRIVE%\setup.exe" (
echo FEHLER: Das gemountete ISO-Laufwerk ist nicht wie erwartet lesbar.
echo Erwartete Datei nicht gefunden: "%ISODRIVE%\setup.exe"
powershell -NoProfile -Command "$p = [Environment]::GetEnvironmentVariable('SRCISO'); Dismount-DiskImage -ImagePath $p" >nul 2>nul
pause >nul
goto End
)
echo.
echo Dateien werden entpackt, bitte warten ...
echo Robocopy-Protokoll: "%ROBOLOG%"
echo.
del "%ROBOLOG%" /f /q >nul 2>nul
robocopy "%ISODRIVE%\." "%ISO%" *.* /E /R:1 /W:1 /XJ /TEE /LOG:"%ROBOLOG%"
set "ROBOCODE=%ERRORLEVEL%"
echo.
echo ISO wird wieder ausgehaengt ...
powershell -NoProfile -Command "$p = [Environment]::GetEnvironmentVariable('SRCISO'); Dismount-DiskImage -ImagePath $p" >nul 2>nul
if %ROBOCODE% GEQ 8 (
echo.
echo FEHLER: Beim Kopieren der Dateien aus der ISO ist ein Fehler aufgetreten.
echo Robocopy-Fehlercode: %ROBOCODE%
echo Siehe Protokoll:
echo "%ROBOLOG%"
echo.
pause >nul
goto End
)
echo.
:: ------------------------------------------------------------
:: 3) Plausibilitaetspruefungen
:: ------------------------------------------------------------
if not exist "%ISO%\efi\microsoft\boot\memtest.efi" (
echo FEHLER: Die Windows-Installationsdateien scheinen unvollstaendig zu sein.
echo Erwartete Datei fehlt:
echo "%ISO%\efi\microsoft\boot\memtest.efi"
pause >nul
goto AskExtractPath
)
if not exist "%ISO%\boot\etfsboot.com" (
echo FEHLER: Bootdatei fuer BIOS fehlt:
echo "%ISO%\boot\etfsboot.com"
pause >nul
goto AskExtractPath
)
if not exist "%ISO%\efi\microsoft\boot\efisys.bin" if not exist "%ISO%\efi\microsoft\boot\efisys_noprompt.bin" (
echo FEHLER: UEFI-Bootdatei fehlt:
echo "%ISO%\efi\microsoft\boot\efisys.bin"
echo oder
echo "%ISO%\efi\microsoft\boot\efisys_noprompt.bin"
pause >nul
goto AskExtractPath
)
:: ------------------------------------------------------------
:: 4) Optional: noprompt-Dateien aktivieren
:: ------------------------------------------------------------
if exist "%ISO%\efi\microsoft\boot\cdboot_noprompt.efi" (
if not exist "%ISO%\efi\microsoft\boot\cdboot-prompt.efi" (
echo Benenne UEFI-Bootdateien fuer "no prompt" um ...
ren "%ISO%\efi\microsoft\boot\cdboot.efi" "cdboot-prompt.efi" >nul 2>nul
ren "%ISO%\efi\microsoft\boot\cdboot_noprompt.efi" "cdboot.efi" >nul 2>nul
)
)
if exist "%ISO%\efi\microsoft\boot\efisys_noprompt.bin" (
if not exist "%ISO%\efi\microsoft\boot\efisys_prompt.bin" (
ren "%ISO%\efi\microsoft\boot\efisys.bin" "efisys_prompt.bin" >nul 2>nul
ren "%ISO%\efi\microsoft\boot\efisys_noprompt.bin" "efisys.bin" >nul 2>nul
)
)
cls
echo.
echo ============================================================================
echo.
echo Die Installationsdateien sind jetzt entpackt und vorbereitet.
echo.
echo Sie koennen nun manuelle Anpassungen vornehmen, z.B.:
echo.
echo - Treiber hinzufuegen
echo - autounattend.xml oder unattend.xml einfuegen
echo - Dateien austauschen oder Skripte ergaenzen
echo - Images mit DISM bearbeiten
echo.
echo Entpackter Ordner:
echo "%ISO%"
echo.
echo Wenn Sie mit allen Anpassungen fertig sind, geben Sie bitte zur
echo Sicherheit exakt folgende Freigabe ein:
echo.
echo JETZT ISO BAUEN
echo.
echo Nur dann wird die ISO-Erstellung fortgesetzt.
echo.
echo ============================================================================
:WaitForContinue
set "CONTINUECODE="
set /p "CONTINUECODE=Freigabe eingeben: "
if /I "%CONTINUECODE%"=="JETZT ISO BAUEN" goto ContinueIsoBuild
echo.
echo Falsche Eingabe. Das Skript wird noch nicht fortgesetzt.
echo Bitte geben Sie exakt ein:
echo JETZT ISO BAUEN
echo.
goto WaitForContinue
:ContinueIsoBuild
echo.
echo Erstelle ISO, bitte warten ...
echo.
:: ------------------------------------------------------------
:: 5) ISO erstellen
:: ------------------------------------------------------------
echo Der Virenschutz wird de-aktiviert
echo bitte warten ...
powershell.exe -command "Set-MpPreference -DisableRealtimeMonitoring $true"
powershell.exe -command "Set-MpPreference -MAPSReporting Disabled"
powershell.exe -command "Set-MpPreference -SubmitSamplesConsent NeverSend"
powershell.exe -command "Set-MpPreference -DisableIntrusionPreventionSystem $true"
powershell.exe -command "Set-MpPreference -DisableIOAVProtection $true"
powershell.exe -command "Set-MpPreference -DisableScriptScanning $true"
powershell.exe -command "Set-MpPreference -EnableControlledFolderAccess Disabled"
powershell.exe -command "Set-MpPreference -EnableNetworkProtection Disabled"
powershell.exe -command "Set-MpPreference -ScanOnlyIfIdleEnabled $false"
powershell.exe -command "Set-MpPreference -DisableRemovableDriveScanning $true"
powershell.exe -command "Set-MpPreference -DisableEmailScanning $true"
powershell.exe -command "Set-MpPreference -PUAProtection Disabled"
powershell.exe -command "Set-MpPreference -PerformanceModeStatus disabled"
echo Energiesparplan "Höchstleistung" (High Performance) setzen
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
"%OSCDIMG_EXE%" -m -o -u2 -udfver102 -bootdata:2#p0,e,b"%ISO%\boot\etfsboot.com"#pEF,e,b"%ISO%\efi\microsoft\boot\efisys.bin" "%ISO%" "%ISOFILE%"
if errorlevel 1 (
echo.
echo FEHLER: Die ISO konnte nicht erstellt werden.
pause >nul
goto End
)
echo.
echo Fertig.
echo ISO erfolgreich erstellt:
echo "%ISOFILE%"
echo.
pause
goto End
:: ------------------------------------------------------------
:: Unterprogramme
:: ------------------------------------------------------------
:BuildIsoFile
if "%OUTDIR:~-1%"=="\" (
set "ISOFILE=%OUTDIR%%VMName%.iso"
) else (
set "ISOFILE=%OUTDIR%\%VMName%.iso"
)
exit /b 0
:ValidateIsoName
set "CHECKNAME=%~1"
if not defined CHECKNAME (
echo FEHLER: Kein ISO-Name angegeben.
pause >nul
exit /b 1
)
set "PS_NAME=%CHECKNAME%"
powershell -NoProfile -Command ^
"$n = [Environment]::GetEnvironmentVariable('PS_NAME');" ^
"if ([string]::IsNullOrWhiteSpace($n)) { exit 1 }" ^
"if ($n.Trim() -ne $n) { exit 1 }" ^
"if ($n -in '.', '..') { exit 1 }" ^
"if ($n -match '[\\/:*?""<>|]') { exit 1 }" ^
"$reserved = 'CON','PRN','AUX','NUL','COM1','COM2','COM3','COM4','COM5','COM6','COM7','COM8','COM9','LPT1','LPT2','LPT3','LPT4','LPT5','LPT6','LPT7','LPT8','LPT9';" ^
"if ($reserved -contains $n.ToUpperInvariant()) { exit 1 }" ^
"exit 0"
if errorlevel 1 (
echo FEHLER: Der ISO-Name ist ungueltig.
echo.
echo Nicht erlaubt:
echo - leerer Name
echo - fuehrende oder abschliessende Leerzeichen
echo - . oder ..
echo - Zeichen \ / : * ? ^" ^< ^> ^|
echo - reservierte Namen wie CON, PRN, AUX, NUL, COM1, LPT1
pause >nul
exit /b 1
)
exit /b 0
:ClearFolder
set "TARGETFOLDER=%~1"
if "%TARGETFOLDER%"=="" exit /b 1
if not exist "%TARGETFOLDER%\" exit /b 1
if /I "%TARGETFOLDER%"=="C:\" exit /b 1
if /I "%TARGETFOLDER%"=="C:" exit /b 1
if /I "%TARGETFOLDER%"=="D:\" exit /b 1
if /I "%TARGETFOLDER%"=="D:" exit /b 1
if /I "%TARGETFOLDER%"=="%SystemDrive%\" exit /b 1
if /I "%TARGETFOLDER%"=="%SystemDrive%" exit /b 1
del /f /s /q "%TARGETFOLDER%\*" >nul 2>nul
for /d %%D in ("%TARGETFOLDER%\*") do rd /s /q "%%~fD" >nul 2>nul
set "LEFTCOUNT=0"
for /f %%A in ('dir /a /b "%TARGETFOLDER%" 2^>nul ^| find /c /v ""') do set "LEFTCOUNT=%%A"
if not "%LEFTCOUNT%"=="0" exit /b 1
exit /b 0
:FindOscdimg
set "OSCDIMG_EXE="
for /f "delims=" %%I in ('where oscdimg.exe 2^>nul') do (
if exist "%%~fI" (
set "OSCDIMG_EXE=%%~fI"
goto :eof
)
)
for /f "delims=" %%I in ('dir /b /s "%LOCALAPPDATA%\Microsoft\WinGet\Packages\oscdimg.exe" 2^>nul') do (
if exist "%%~fI" (
set "OSCDIMG_EXE=%%~fI"
goto :eof
)
)
for /f "delims=" %%I in ('dir /b /s "%LOCALAPPDATA%\Microsoft\WinGet\Links\oscdimg.exe" 2^>nul') do (
if exist "%%~fI" (
set "OSCDIMG_EXE=%%~fI"
goto :eof
)
)
for /f "delims=" %%I in ('dir /b /s "%ProgramFiles(x86)%\Windows Kits\*\Assessment and Deployment Kit\Deployment Tools\*\Oscdimg\oscdimg.exe" 2^>nul') do (
if exist "%%~fI" (
set "OSCDIMG_EXE=%%~fI"
goto :eof
)
)
for /f "delims=" %%I in ('dir /b /s "%ProgramFiles%\Windows Kits\*\Assessment and Deployment Kit\Deployment Tools\*\Oscdimg\oscdimg.exe" 2^>nul') do (
if exist "%%~fI" (
set "OSCDIMG_EXE=%%~fI"
goto :eof
)
)
goto :eof
:no_internet
Echo leider keine OSCDIMG.exe vorhanden und/oder keine Internetverbindung möglich
Echo bitte zunächst OSCDIMG installieren / Internetverbindung prüfen!!
pause >nul
goto End
:End
endlocal
echo Der Virenschutz wird wieder aktiviert
echo bitte warten ...
powershell.exe -command "Set-MpPreference -DisableRealtimeMonitoring $false"
powershell.exe -command "Set-MpPreference -MAPSReporting Advanced"
powershell.exe -command "Set-MpPreference -SubmitSamplesConsent SendAllSamples"
powershell.exe -command "Set-MpPreference -DisableIntrusionPreventionSystem $false"
powershell.exe -command "Set-MpPreference -DisableIOAVProtection $false"
powershell.exe -command "Set-MpPreference -DisableScriptScanning $false"
powershell.exe -command "Set-MpPreference -EnableControlledFolderAccess Enabled"
powershell.exe -command "Set-MpPreference -EnableNetworkProtection Enabled"
powershell.exe -command "Set-MpPreference -ScanOnlyIfIdleEnabled:$false"
powershell.exe -command "Set-MpPreference -DisableRemovableDriveScanning:$false"
powershell.exe -command "Set-MpPreference -DisableEmailScanning:$false"
powershell.exe -command "Set-MpPreference -PUAProtection Enabled"
Echo Der Windows-Energieplan "Ausbalanciert" (Balanced) wird eingestellt
powercfg /setactive 381b4222-f694-41f0-9685-ff5bb260df2e
exit /bDu hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
-
Gast2025
Re: ISO erstellen mit OSCDIMG und meinem Script [HowTo}
Benötigten Speicherplatz für zu erstellende Windows 10 oder 11 Iso berechnen
Für das Erstellen und die Verwendung einer Windows 11 ISO-Datei sollten Sie vorsorglich folgende neötigte Speicherplatzkapazitäten einplanen:
Größe der ISO-Datei selbst:
Die heruntergeladene ISO-Datei ist mittlerweile typischerweise etwa 8,3 GB GB bis ....? GB groß.
Tatsächlich aber abhängig von der dafür eigens heruntergeladenen Version
Beispiele sind sehr beliebte Isos von Birkuli (xxx ISO / ESD (deutsch, english))
wie die Multiversionen, Zero Edition Projekt, Unbreaked
sowie Beta oder Canary Versionen.
Hier stehen die Download- Größen im Threat der letzten Veröffentlichung
Temporärer Speicherplatz beim Erstellen:
Beim Download über das Media Creation Tool wird erfahrungsgemäß zusätzlicher Platz benötigt,
Man plant hierfür sicherheitshalber insgesamt 10–15 GB freien Speicherplatz auf der Festplatte ein.
Werden dem entpackten ISO noch Treiber usw. zugefügt bzw. mit eingepflegt,
dann sollte der Speicherplatz mit der oscdimg.exe im Verhältnis 1:1 passen.
Plus Puffergröße - bevor der "Rote Balken" im Explorer erscheint.
Die Größte zu bearbeitenden Datei ist die install.wim.
Die Abfrage richtet sich nach dem zu erstellendem Medium plus Sicherheits- Puffer
If then else
bzw.
freien festplattenspeicher mit cmd oder powershell ermitteln
Schnellste Methode (Freier Speicher in Byte):
fsutil volume diskfree c:
Übersicht aller Laufwerke (Größe & Frei):
wmic logicaldisk get size,freespace,caption
Übersicht aller Laufwerke (in GB):
Get-PSDrive -PSProvider FileSystem | Select-Object Name, @{Name="Free(GB)";Expression={$_.Free/1GB -as [int]}}
Würde ergeben = Pfadangabe für die zu erstellende ISO (wenn mehrere Partitionen)
Dann käme das if not mkdir wieder zum tragen
Kann gerne von Moderator überarbeitet werden
Janz Herzliche Grüße
Für das Erstellen und die Verwendung einer Windows 11 ISO-Datei sollten Sie vorsorglich folgende neötigte Speicherplatzkapazitäten einplanen:
Größe der ISO-Datei selbst:
Die heruntergeladene ISO-Datei ist mittlerweile typischerweise etwa 8,3 GB GB bis ....? GB groß.
Tatsächlich aber abhängig von der dafür eigens heruntergeladenen Version
Beispiele sind sehr beliebte Isos von Birkuli (xxx ISO / ESD (deutsch, english))
wie die Multiversionen, Zero Edition Projekt, Unbreaked
sowie Beta oder Canary Versionen.
Hier stehen die Download- Größen im Threat der letzten Veröffentlichung
Temporärer Speicherplatz beim Erstellen:
Beim Download über das Media Creation Tool wird erfahrungsgemäß zusätzlicher Platz benötigt,
Man plant hierfür sicherheitshalber insgesamt 10–15 GB freien Speicherplatz auf der Festplatte ein.
Werden dem entpackten ISO noch Treiber usw. zugefügt bzw. mit eingepflegt,
dann sollte der Speicherplatz mit der oscdimg.exe im Verhältnis 1:1 passen.
Plus Puffergröße - bevor der "Rote Balken" im Explorer erscheint.
Die Größte zu bearbeitenden Datei ist die install.wim.
Die Abfrage richtet sich nach dem zu erstellendem Medium plus Sicherheits- Puffer
If then else
bzw.
freien festplattenspeicher mit cmd oder powershell ermitteln
Schnellste Methode (Freier Speicher in Byte):
fsutil volume diskfree c:
Übersicht aller Laufwerke (Größe & Frei):
wmic logicaldisk get size,freespace,caption
Übersicht aller Laufwerke (in GB):
Get-PSDrive -PSProvider FileSystem | Select-Object Name, @{Name="Free(GB)";Expression={$_.Free/1GB -as [int]}}
Würde ergeben = Pfadangabe für die zu erstellende ISO (wenn mehrere Partitionen)
Dann käme das if not mkdir wieder zum tragen
Kann gerne von Moderator überarbeitet werden
Janz Herzliche Grüße
- Holgi
- Guru

- Beiträge: 3976
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 523 Mal
- Danke erhalten: 816 Mal
- Gender:
Re: ISO erstellen mit OSCDIMG und meinem Script [HowTo}
@Gast2025
leider nicht zuEnde gedacht:
Die BasisISO wird heruntergeladen. Deren Größe steht fest.
Dann wird sie mit Robocopy auf die Festplatte kopiert und dort bearbeitet. Dann können Daten in Größe XXX hinzukommen (Treibersammlungen etc.). Die spätere Größe des Ordners hat mit der BasisISO nichts zu tun. Es müßte theoretisch dessen Größe berechnet werden (Y), bevor die neue ISO erstellt wird. Dabei noch der gerade freie Festplattenspeicher + Spare (X).
Wenn X-Y >0 dann o.k.
ISO Größe und Ordner Größe kommen wohl meistens so überein. Da sehe ich keinen bedeutsamen Unterschied.
Wenn du das jetzt so in das vorhandene Script mit Code umsetzen kannst. dann wäre das ein konstruktiver Beitrag.
leider nicht zuEnde gedacht:
Die BasisISO wird heruntergeladen. Deren Größe steht fest.
Dann wird sie mit Robocopy auf die Festplatte kopiert und dort bearbeitet. Dann können Daten in Größe XXX hinzukommen (Treibersammlungen etc.). Die spätere Größe des Ordners hat mit der BasisISO nichts zu tun. Es müßte theoretisch dessen Größe berechnet werden (Y), bevor die neue ISO erstellt wird. Dabei noch der gerade freie Festplattenspeicher + Spare (X).
Wenn X-Y >0 dann o.k.
ISO Größe und Ordner Größe kommen wohl meistens so überein. Da sehe ich keinen bedeutsamen Unterschied.
Wenn du das jetzt so in das vorhandene Script mit Code umsetzen kannst. dann wäre das ein konstruktiver Beitrag.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114