LEDZEPPELIN 0 Geschrieben 22. Mai 2020 Melden Teilen Geschrieben 22. Mai 2020 Hallo, mir wurde vo einem netten Forummitglied folgendes Skript geschrieben um mehrere Teildateinen einer großen .ts Filmdatei zusammenzufügen. Die Dateien wurden wegen FAT32 vom TV Revciever in mehrere Teile aufgeteilt. Alle in Ordnern in denen sich folgendes befindet (Filmname.ts; Filmname1.ts; Filmname2.ts etc.) # Quellverzeichnis mit Ordnern >> $Quelle = "N:\" >> >> # Zielverzeichnis der .ts Ausgabedatei(en) >> $Ziel = "S:\ZielOrdner" >> >> # falls "\" am Ende von Ziel vergessen >> if ( $Ziel.Substring($Ziel.Length-1) -ne "\" ) { $Ziel += "\" } >> >> # falls Zielverzeichnis existiert >> if ( Test-Path -Path $Ziel -PathType Container ) { >> >> # Einlesen der Verzeichnisse im Quellordner >> $folders = Get-ChildItem -Directory -Path $Quelle >> >> # falls Ordner vorhanden >> if ( $folders.Count -ne 0 ) { >> foreach ( $ordner in $folders ) { >> # Kontrollausgabe >> $ordner.FullName >> # Name der Zieldatei >> $Stub = $Ziel + $ordner.BaseName >> # neue Datei >> $target = $Stub + ".ts" >> # bei Leerzeichen Anfuehrungszeichen hinzu >> if ( $Stub.IndexOf(" ") -ne -1 ) { $target = "`"" + $target + "`"" } >> # Suchmaske fuer Dateien im Ordner >> $files = $ordner.FullName + "\*.ts" >> >> # falls weder Zieldatei noch getestete Zieldatei vorhanden sind... >> if ( -not ( Test-Path -Path $target ) ) { >> # bei Leerzeichen Anfuehrungszeichen hinzu wg. DOS >> if ( $files.IndexOf(" ") -ne -1 ) { $files = "`"" + $files + "`"" } >> # Combine per DOS-copy anwerfen >> Start-Process -FilePath "$env:comspec" -ArgumentList "/c","copy","/b",$files,$target -Wait >> # nach jedem Verzeichnis auf Enter-Taste warten >> # Read-Host -Prompt "Enter..." >> } >> } >> } else { Write-Host "Keine Ordner in $Quelle gefunden." } >> } else { Write-Host "Zielverzeichnis $Ziel existiert nicht!" } Das ganze funktionierte letzte Woche auch ganz gut. Als ich es heute gestartet habe wurden die Dateien in in der falschen Reihenfolge zusammengefügt. Also erst Teil3 danarn Teil2 daran Teil1 etc. Das macht natürlich keinen Sinn. Kann mir bitte jemand weiterhelfen und erklären wo das Problem liegt. Warum ging das letzte Woche und geht jetzt nicht mehr? Der einzige Unterschied waren die Quelle (I:\) und das Ziel. (P:\ZielOrdner) Ich bin hier echt am verzweifeln da ich riesige Mengen dieser Dateien hier habe. Bitte um Hilfe. Vielen Dank. Beste Grüße Ingo Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 22. Mai 2020 Melden Teilen Geschrieben 22. Mai 2020 (bearbeitet) Tust Du uns bitte den Gefallen und bearbeitest Deine Frage nochmal? Den Code fügst Du bitte ohne die ">>" am Anfang ein und dann formatierst Du ihn mittels des Buttons </> über die Bearbeitungsleiste als Code. So können wir uns den Code kopieren, ohne ihn aufwändig bearbeiten zu müssen. Danke schon mal. Und noch ne kleine Sache: Wenn Du die gleiche Frage zur gleichen Zeit in mehreren unterschiedlichen Foren postest, sei doch bitte so fair und füge wenigstens Links zu den jeweils anderen Foren zu Deiner Frage. Damit sich die Leute, die bereit sind, Dir zu helfen, im Zweifel nicht mehrfach oder umsonst die Mühe machen müssen. Danke schon mal im Voraus. https://social.technet.microsoft.com/Forums/de-DE/ee06a217-d6b2-4f3d-b01e-6ddd33cf21ba/problem-mit-skript-beim-zusammenfgen-von-ts-dateien?forum=powershell_de bearbeitet 22. Mai 2020 von BOfH_666 Zitieren Link zu diesem Kommentar
LEDZEPPELIN 0 Geschrieben 22. Mai 2020 Autor Melden Teilen Geschrieben 22. Mai 2020 # Quellverzeichnis mit Ordnern $Quelle = "I:\" # Zielverzeichnis der .ts Ausgabedatei(en) $Ziel = "J:\ZielOrdner" # falls "\" am Ende von Ziel vergessen if ( $Ziel.Substring($Ziel.Length-1) -ne "\" ) { $Ziel += "\" } # falls Zielverzeichnis existiert if ( Test-Path -Path $Ziel -PathType Container ) { # Einlesen der Verzeichnisse im Quellordner $folders = Get-ChildItem -Directory -Path $Quelle # falls Ordner vorhanden if ( $folders.Count -ne 0 ) { foreach ( $ordner in $folders ) { # Kontrollausgabe $ordner.FullName # Name der Zieldatei $Stub = $Ziel + $ordner.BaseName # neue Datei $target = $Stub + ".ts" # bei Leerzeichen Anfuehrungszeichen hinzu if ( $Stub.IndexOf(" ") -ne -1 ) { $target = "`"" + $target + "`"" } # Suchmaske fuer Dateien im Ordner $files = $ordner.FullName + "\*.ts" # falls weder Zieldatei noch getestete Zieldatei vorhanden sind... if ( -not ( Test-Path -Path $target ) ) { # bei Leerzeichen Anfuehrungszeichen hinzu wg. DOS if ( $files.IndexOf(" ") -ne -1 ) { $files = "`"" + $files + "`"" } # Combine per DOS-copy anwerfen Start-Process -FilePath "$env:comspec" -ArgumentList "/c","copy","/b",$files,$target -Wait # nach jedem Verzeichnis auf Enter-Taste warten # Read-Host -Prompt "Enter..." } } } else { Write-Host "Keine Ordner in $Quelle gefunden." } } else { Write-Host "Zielverzeichnis $Ziel existiert nicht!" } War das jetzt so richtig? Das ist der Originalcode der schon mal funktioniert hat. Deiner Anwesiung folgend hier der Hinweis und Link das ich in zwei Foren die gleiche Frage gepostet habe: https://social.technet.microsoft.com/Forums/de-DE/ee06a217-d6b2-4f3d-b01e-6ddd33cf21ba/problem-mit-skript-beim-zusammenfgen-von-ts-dateien?forum=powershell_de Zitieren Link zu diesem Kommentar
Nobbyaushb 1.475 Geschrieben 22. Mai 2020 Melden Teilen Geschrieben 22. Mai 2020 vor 20 Minuten schrieb LEDZEPPELIN: Deiner Anwesiung folgend hier der Hinweis und Link das ich in zwei Foren die gleiche Frage gepostet habe: Das steht übrigens so in den Boardregeln, die du bei der Anmeldung bestätigt hast. Zitieren Link zu diesem Kommentar
LEDZEPPELIN 0 Geschrieben 22. Mai 2020 Autor Melden Teilen Geschrieben 22. Mai 2020 Okay. Ich gebe zu dass ich sie nicht gelesen habe. Tut mir leid. Zitieren Link zu diesem Kommentar
Nobbyaushb 1.475 Geschrieben 22. Mai 2020 Melden Teilen Geschrieben 22. Mai 2020 vor 23 Minuten schrieb LEDZEPPELIN: Okay. Ich gebe zu dass ich sie nicht gelesen habe. Tut mir leid. Passt schon - machen viele so... - sehr zum Leid der freiwilligen Helfer, die sowas überwiegend in ihrer Freizeit beantworten. Die Arbeitgeber, die sowas unterstützen kann man an zwei Händen abzählen Zitieren Link zu diesem Kommentar
LEDZEPPELIN 0 Geschrieben 22. Mai 2020 Autor Melden Teilen Geschrieben 22. Mai 2020 Andererseits wäre ich Jahre beschäftigt wenn ich alle AGBs lesen würde die ich lesen müßte wenn ich mich in Foren etc. bewege. Das ist einfach völlig unrealistisch. Jetzt wirds aber zu Off Topic denke ich. 2 Zitieren Link zu diesem Kommentar
daabm 1.366 Geschrieben 22. Mai 2020 Melden Teilen Geschrieben 22. Mai 2020 Siehe Technet-Antwort - Du wirfst copy eine unsortierte Dateiliste zum Fraß vor, da ist klar, daß dann was undeterministisches dabei rauskommt... Du mußt die Liste koordiniert zusammenbauen, siehe "copy /?". 1 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 22. Mai 2020 Melden Teilen Geschrieben 22. Mai 2020 vor 2 Stunden schrieb LEDZEPPELIN: War das jetzt so richtig? Also, um ehrlich zu sein: Nein. Eigentlich hatte ich darum gebeten, Deine Original-Frage zu bearbeiten und den Code dort zu korrigieren. Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 23. Mai 2020 Melden Teilen Geschrieben 23. Mai 2020 Und falls es mal schnell gehen soll copy datei1+datei2 datei3 /b Zitieren Link zu diesem Kommentar
LEDZEPPELIN 0 Geschrieben 23. Mai 2020 Autor Melden Teilen Geschrieben 23. Mai 2020 Ist klar. Bringt mich aber nicht weiter. vor 16 Stunden schrieb daabm: Siehe Technet-Antwort - Du wirfst copy eine unsortierte Dateiliste zum Fraß vor, da ist klar, daß dann was undeterministisches dabei rauskommt... Du mußt die Liste koordiniert zusammenbauen, siehe "copy /?". Und wie genau mache ich das? Habe mir im Netz mal die Befehle zu copy angesehen, komm aber nicht weiter damit. Wie wäre diese Zeile? Bringt mich das der Lösung näher? Get-Content (gci log_* | sort BaseName) > gesamt.log Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 23. Mai 2020 Melden Teilen Geschrieben 23. Mai 2020 Auszug aus copy /?: Um Dateien aneinander zu hängen, geben Sie eine einzelne Datei als Ziel an, aber mehrere Dateien als Quelle (unter Verwendung von Platzhaltern oder in der Form: Datei1 + Datei2 + Datei3). Da Du sie nicht einzeln hinterander angeben willst, musst Du sie an Copy sortiert übergeben. Ob das auf- oder absteigend nach dem Name, Datum oder sonstwas ist, kannst nur du wissen. Zitieren Link zu diesem Kommentar
LEDZEPPELIN 0 Geschrieben 23. Mai 2020 Autor Melden Teilen Geschrieben 23. Mai 2020 Dann also aufsteigend nach dem Namen denke ich. Filmtitel.ts Filmtitel1.ts Filmtitel2.ts Und wie sieht sowas dann im Skript aus? Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 23. Mai 2020 Melden Teilen Geschrieben 23. Mai 2020 (bearbeitet) Du wirst hier sicher kein fertiges Script kriegen, Hilfe zur Selbsthilfe. Excel kann dir übrigens auch sehr dabei helfen. Lies dir diesen Artikel durch und lass dir eine Dateiliste mit dir /b >DeineDatei.txt jetzt hast Du alle Dateien aus dem Verzeichnis in einer TXT, die TXT in Excel imporiteren und mit deinem Copy Befehl verknüpfen, schon kannst Du kopieren und zusammenfügen. ;) bearbeitet 24. Mai 2020 von Sunny61 Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 23. Mai 2020 Melden Teilen Geschrieben 23. Mai 2020 Mit https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-7 und https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Sort-Object?view=powershell-7 solltest du weiterkommen. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.