String aus einer Datei in eine Textfile exportieren und zusammen mit einer anderen Datei in ein Zip-Archiv packen
Hallo,
mit dem Titel habe ich mich etwas schwer getan und ich hoffe, dass es durch meine Ausführung etwas verständlicher wird:
Ich habe diverse Ordner und Unterordner in denen passwortgeschützte .rar Dateien liegen. Neben diesen Dateien liegen im selben Ordner auch entsprechende .bat und .sh Dateien welche die geschützten Dateien entpacken sollen.
Das ganze sieht dann in etwa so aus:
Ordner
|
Unterordner
|
evtl. noch weitere Unterordner
|
Geschützte Datei 1.rar
Noch mehr Geschützte Dateien.rar
extract_file_Geschützte Datei 1.bat
extract_file_Geschützte Datei 1.sh
Weitere Unwichtige Dateien
|
Unterordner etc.
Die .bat Dateien sind prinzipiell gleich aufgebaut:
REM Titel
REM Autor
REM Datum
REM Inhaltsangabe
rar x "xxxxxxx.rar" -pPasswort
del "xxxxxxx.rar"
Nun hat sich allerdings zum einen im ursprünglichen Prozess der .bat / .sh Erstellung der Fehlerteufel eingeschlichen: "xxxxxxx.rar" entspricht nicht immer "Geschützter Dateinamen.rar". Zum anderen ist nicht mehr auf allen Systemen das Ausführen von Scripten erlaubt.
Daher soll nun das Passwort aus der .bat in einen Textdatei mit dem Namen "Passwort.txt" exportiert werden, welche dann zusammen mit der entsprechenden .rar datei in eine .zip Datei gepackt werden soll. Alle anderen Dateien sollen gelöscht werden. Einige .rar Dateien sind nicht geschützt und haben daher auch keine .bat oder .sh. Diese sollen ebenfalls in eine eigentständige .zip gepackt werden.
Ich würde mich sehr freuen, wenn sich jemand meines Problems annehmen könnte.
Viele Grüße
Robert
mit dem Titel habe ich mich etwas schwer getan und ich hoffe, dass es durch meine Ausführung etwas verständlicher wird:
Ich habe diverse Ordner und Unterordner in denen passwortgeschützte .rar Dateien liegen. Neben diesen Dateien liegen im selben Ordner auch entsprechende .bat und .sh Dateien welche die geschützten Dateien entpacken sollen.
Das ganze sieht dann in etwa so aus:
Ordner
|
Unterordner
|
evtl. noch weitere Unterordner
|
Geschützte Datei 1.rar
Noch mehr Geschützte Dateien.rar
extract_file_Geschützte Datei 1.bat
extract_file_Geschützte Datei 1.sh
Weitere Unwichtige Dateien
|
Unterordner etc.
Die .bat Dateien sind prinzipiell gleich aufgebaut:
REM Titel
REM Autor
REM Datum
REM Inhaltsangabe
rar x "xxxxxxx.rar" -pPasswort
del "xxxxxxx.rar"
Nun hat sich allerdings zum einen im ursprünglichen Prozess der .bat / .sh Erstellung der Fehlerteufel eingeschlichen: "xxxxxxx.rar" entspricht nicht immer "Geschützter Dateinamen.rar". Zum anderen ist nicht mehr auf allen Systemen das Ausführen von Scripten erlaubt.
Daher soll nun das Passwort aus der .bat in einen Textdatei mit dem Namen "Passwort.txt" exportiert werden, welche dann zusammen mit der entsprechenden .rar datei in eine .zip Datei gepackt werden soll. Alle anderen Dateien sollen gelöscht werden. Einige .rar Dateien sind nicht geschützt und haben daher auch keine .bat oder .sh. Diese sollen ebenfalls in eine eigentständige .zip gepackt werden.
Ich würde mich sehr freuen, wenn sich jemand meines Problems annehmen könnte.
Viele Grüße
Robert
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 315050
Url: https://administrator.de/forum/string-aus-einer-datei-in-eine-textfile-exportieren-und-zusammen-mit-einer-anderen-datei-in-ein-zip-archiv-315050.html
Ausgedruckt am: 11.01.2025 um 00:01 Uhr
4 Kommentare
Neuester Kommentar
Hallo Robert,
hier ein Powershell-Skript das das abfackelt:
Viel Spaß
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
hier ein Powershell-Skript das das abfackelt:
# Quellpfad der Dateien (Ordner wird inkl. Unterordner nach RAR-Dateien durchsucht)
$sourcepath = 'c:\romberto\source'
if ($PSVersionTable.PSVersion.Major -lt 3){write-host "ERROR: Minimum Powershell Version 3.0 is required!" -F Yellow; return}
# Asemblies laden (benötigt mindestens .NET 4.5 und Powershell 3.0)
Add-Type -AssemblyName System.IO.Compression
Add-Type -AssemblyName System.IO.Compression.FileSystem
gci $sourcepath -Filter *.rar -Recurse | ?{!$_.PSIsContainer} | %{
# ZIP-Datei erstellen
$zip = [System.IO.Compression.ZipFile]::Open("$($_.DirectoryName)\$($_.Basename).zip",[System.IO.Compression.ZipArchiveMode]::Create)
$basename = $_.BaseName
$batch = gci $_.DirectoryName -Filter *.bat -recurse | ?{$_.Name -like "extract*$basename.bat"} | select -First 1
if ($batch){
# Passwort extrahieren
[regex]::match((gc $batch.FullName | out-string),'(?i)-p([^\r\n]+)').Groups[1].Value | set-content "$env:TEMP\Passwort.txt" -Force
# Dateien spezifizieren die zur ZIP-Datei hinzugefügt werden
$files = @("$env:TEMP\Passwort.txt",$_.FullName)
}else{
# keine zugehörige Batch vorhanden (es landet nur das RAR im ZIP)
$files = $_.FullName
}
# Dateien zu ZIP hinzufügen
$files | %{[void][System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($zip,$_,[System.IO.Path]::GetFileName($_))}
# Ressourcen freigeben
$zip.Dispose()
}
# Quelldateien löschen
Remove-Item "$sourcepath\*" -Recurse -Include *.rar,*.bat,*.sh -Force -EA Ignore
Viel Spaß
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Zitat von @romberto:
In deiner Version geht das Skript davon aus, dass nur eine .rar Datei pro Ordner existiert -> durch den Löschbefehl, werden nach dem ersten erfolgreichen packen, sämtliche übrigen Dateien gelöscht. Auch diejenigen, die noch zu bearbeiten wären.
Uups sorry, da habe ich die Löschung an der falschen Stelle platziert, ist oben korrigiert.In deiner Version geht das Skript davon aus, dass nur eine .rar Datei pro Ordner existiert -> durch den Löschbefehl, werden nach dem ersten erfolgreichen packen, sämtliche übrigen Dateien gelöscht. Auch diejenigen, die noch zu bearbeiten wären.
Mit ein paar Dateien gibt es noch ´Fehler und zwar wenn "-P" im Dateinamen vorkommt. Dann geht das Skript davon aus, dass der rest des Dateinamens das Passwort sei.
Wirklich, vielen, vielen Dank für diese immense Zeitersparniss.
You're welcome.Du kannst dich ja von Zeit zu Zeit mal revanchieren wenn du im Forum mit uns dein geballtes Wissen teilst .
Grüße Uwe