commit f2cfe7ad714dcef8a4285e11c0d34ef46a324a9a Author: Andraz Robin Date: Wed Mar 19 07:53:06 2025 +0100 Skript hinzugefügt diff --git a/autoventoy.ps1 b/autoventoy.ps1 new file mode 100644 index 0000000..a1abc54 --- /dev/null +++ b/autoventoy.ps1 @@ -0,0 +1,244 @@ +# https://www.ventoy.net/en/doc_windows_cli.html +# https://hedgedoc.itlabs.at/y4MtvCKURw2Om0zevkA5sQ?both +# scripting + +$Ventoy = "C:\Users\pikit\Desktop\ventoy-1.1.05" +$ISODateien = "C:\Users\pikit\Desktop\ventoy-itlabs\" + + +Read-Host -Prompt "Diese Datei formattiert und setzt Ventoy auf USBs auf. +Die USBs sollen den Drive D haben. + +!!Achtung!! USB wird formattiert! Daten werden unwiederruflich geloescht + +Druecke Enter um fortzufahren." + +Read-Host -Prompt "Bist du dir sicher?" + +# Liste der verfügbaren Laufwerke abrufen +$drives = Get-WmiObject -Class Win32_LogicalDisk | Where-Object { $_.DriveType -eq 2 } | Select-Object -ExpandProperty DeviceID + +# Zeige die verfügbaren Laufwerke zur Auswahl an +Write-Host "Verfuegbare USB-Laufwerke:" +$counter = 1 +foreach ($drive in $drives) { + Write-Host "$counter. $drive" + $counter++ +} + +# Benutzer zur Auswahl auffordern +$choice = Read-Host "Waehle eine USB aus (1-$counter)" + +# Überprüfe, ob die Eingabe gültig ist +if ($choice -ge 1 -and $choice -le $drives.Count) { + $selectedDrive = $drives[$choice - 1] + Write-Host "Du hast Laufwerk $selectedDrive gewaehlt." + + # Ventoy2Disk Befehl mit dem gewählten Laufwerk ausführen + & "$Ventoy\Ventoy2Disk.exe" "VTOYCLI" "/I" "/Drive:$selectedDrive" +} else { + Write-Host "Ungueltige Auswahl. Bitte waehlen Sie eine gueltige Zahl." +} + +Start-Sleep -seconds 1.5 + +do { + $progress = Get-Content "$Ventoy\cli_percent.txt" + Write-Host "`rFortschritt: $progress%" -NoNewline + Start-Sleep -Milliseconds 250 +} while ($progress -ne "100") + +Write-Host " +" + +get-content "$Ventoy\cli_done.txt" + +Write-Host " +" + +Write-Host $selectedDrive + +Read-Host -Prompt "0 = success +1 = fail + +Druecke enter um forzufahren. Eine Ventoy Theme wird vom git heruntergeladet." + +# Bei 1 usb: selectedDrive wird als nur "D" angezeigt und muss ":" hinzugefügt werden. +# Bei mehreren USB: selectedDrive wird als "D:" angezeigt und muss kein ":" hinzugefügt werden! +$selectedDrive = $selectedDrive + ":" + + +$repoPath = "$selectedDrive\Theme\" +$gitRepoUrl = "https://git.itlabs.at/neko/ventoy-itlabs.git" + +# Prüfen, ob das Repository schon existiert (nicht mehr nötig, aber werde ich nicht abändern) + +if (Test-Path "$repoPath\.git") { + Write-Host "Repository existiert bereits. Aktualisiere..." + Set-Location $repoPath + git pull +} else { + Write-Host "Repository nicht gefunden. Klone das Theme-Repo..." + git clone $gitRepoUrl $repoPath +} + +Write-Host " +" +if (Test-Path $repoPath) { + Write-Host -Prompt "Theme erfolgreich heruntergeladen!" + Write-Host " + " + # .git-Ordner entfernen + + $gitFolder = "$repoPath\.git" + if (Test-Path $gitFolder) { + Remove-Item -Recurse -Force $gitFolder + Write-Host ".git-Ordner wurde geloescht." + } + +Write-Host " +" + + # Alle Dateien aus dem Theme-Ordner direkt nach $selectedDrive\ verschieben + + Get-ChildItem -Path $repoPath -Recurse | Move-Item -Destination "$selectedDrive\" -Force + + # Ursprünglichen Theme-Ordner löschen + Remove-Item -Recurse -Force $repoPath + + Write-Host "Theme wurde nach $selectedDrive\ verschoben und der urspruengliche Ordner wurde geloescht." +} else { + Write-Host "Fehler: Das Theme konnte nicht heruntergeladen werden!" + exit 1 +} + +Write-Host " +" +# man kann erkennen, das nicht alles mit KI erstellt wurde, da die formattierung so schlecht ist +# update: alles mit KI geschrieben :( +Read-Host -Prompt "Druecke Enter um ISO-Dateien vom ..\Desktop\ISO-Dateien zu kopieren. +Achtung! Kann lange dauern! " + +# das ist schlecht und hässlich, könnte man verbessen +$sourcePath = "$ISODateien" +$sourcePathW = "$sourcePath\1 Windows" +$sourcePathL = "$sourcePath\2 Linux" +$sourcePathO = "$sourcePath\3 Others" +$sourcePathU = "$sourcePath\4 Utilities" +$targetPathW = "$selectedDrive\1 Windows" +$targetPathL = "$selectedDrive\2 Linux" +$targetPathO = "$selectedDrive\3 Others" +$targetPathU = "$selectedDrive\4 Utilities" + +# schaut nach ob es die ordner gibt, das kann auch besser sein +if (!(Test-Path $sourcePath)) { + Write-Host "Fehler: Der Quellordner existiert nicht." -ForegroundColor Red + exit 1 +} + +if (!(Test-Path $sourcePathW)) { + Write-Host "Fehler: Der Ordner 1 Windows existiert nicht." -ForegroundColor Red + exit 1 +} + +if (!(Test-Path $sourcePathL)) { + Write-Host "Fehler: Der Ordner 2 Linux existiert nicht." -ForegroundColor Red + exit 1 +} + +if (!(Test-Path $sourcePathO)) { + Write-Host "Fehler: Der Ordner 3 Others existiert nicht." -ForegroundColor Red + exit 1 +} + +if (!(Test-Path $sourcePathU)) { + Write-Host "Fehler: Der 4 Utilities existiert nicht." -ForegroundColor Red + exit 1 +} +# +if (!(Test-Path $targetPathW)) { + Write-Host "Fehler: Der Zielordner 1 Windows existiert nicht." -ForegroundColor Red + exit 1 +} + +if (!(Test-Path $targetPathL)) { + Write-Host "Fehler: Der Zielordner 2 Linux existiert nicht." -ForegroundColor Red + exit 1 +} + +if (!(Test-Path $targetPathO)) { + Write-Host "Fehler: Der Zielordner 3 Others existiert nicht." -ForegroundColor Red + exit 1 +} + +if (!(Test-Path $targetPathU)) { + Write-Host "Fehler: Der Zielordner 4 Utilities existiert nicht." -ForegroundColor Red + exit 1 +} + +# erstellt eine funktion die ein prozent der kopierten Dateien angibt und angibt, welche datei kopiert wird. +function Copy-FilesWithProgress { + param ( + [string]$source, + [string]$target + ) + + # Alle ISO-Dateien im Quellordner holen + $files = Get-ChildItem -Path $source -Filter "*.iso" + $totalFiles = $files.Count + $counter = 0 + + if ($totalFiles -eq 0) { + Write-Host "Keine ISO-Dateien in $source gefunden." + return + } + + foreach ($file in $files) { + $destinationPath = Join-Path -Path $target -ChildPath $file.Name + + # Prüfen, ob Datei bereits existiert und gleich groß ist + if (Test-Path $destinationPath) { + $sourceSize = (Get-Item $file.FullName).Length + $destSize = (Get-Item $destinationPath).Length + if ($sourceSize -eq $destSize) { + Write-Host "Überspringe: $($file.Name) (bereits vorhanden)" + $counter++ + continue + } + } + + # Datei kopieren + Write-Host "Kopiere: $($file.Name)" + Copy-Item -Path $file.FullName -Destination $destinationPath -Force + + # Fortschritt berechnen und anzeigen + $counter++ + $progressPercent = [math]::Round(($counter / $totalFiles) * 100, 2) + Write-Host "`rFortschritt: $progressPercent%" -NoNewline + } + + Write-Host " + Fertig mit $source -> $target!" +} + +# Kopiervorgang starten +# wird one-by-one kopiert +Copy-FilesWithProgress -source $sourcePathW -target $targetPathW +Copy-FilesWithProgress -source $sourcePathL -target $targetPathL +Copy-FilesWithProgress -source $sourcePathO -target $targetPathO +Copy-FilesWithProgress -source $sourcePathU -target $targetPathU + +Write-Host " +" + +Write-Host "`nAlle Dateien wurden kopiert!" + +Write-Host " +" + +Read-Host -Prompt "Druecke Enter zum Beenden." + +# bei bearbeiten beachten: skript wurde für einen windows laptop erstellt und the pfade müssen abgeändert werden! +# update: mit variablen ganz am anfang des Skriptes kann man das leicht ändern + +# von Andraz Robin und Lucas Tscharf am 17/03/202566666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666 \ No newline at end of file