Jump to content
LEDZEPPELIN

Problem mit skript beim Zusammenfügen von ts Dateien

Recommended Posts

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

Share this post


Link to post

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

Edited by BOfH_666

Share this post


Link to post
# 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

 

Share this post


Link to post
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.

Share this post


Link to post
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  :-)

Share this post


Link to post

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.

  • Sad 2

Share this post


Link to post

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 /?".

  • Thanks 1

Share this post


Link to post
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.  ;-) 

Share this post


Link to post

Und falls es mal schnell gehen soll

 

copy datei1+datei2 datei3 /b

Share this post


Link to post

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

Share this post


Link to post

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.

Share this post


Link to post

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. ;)

Edited by Sunny61

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Werbepartner:



×
×
  • Create New...