Skript hinzugefügt
This commit is contained in:
commit
f2cfe7ad71
244
autoventoy.ps1
Normal file
244
autoventoy.ps1
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user