Cypheros Transportstream Forum

Deutschsprachiger Support => TS-Doctor 3.x => Thema gestartet von: Trimonium am Januar 03, 2020, 11:23:56

Titel: Batch Datei automatisiert befüllen?
Beitrag von: Trimonium am Januar 03, 2020, 11:23:56
Hi,

ich wollte mal fragen ob nicht die Möglichkeit besteht die Batchdatei automatisch zu befüllen.
Wenn ich z. B. einen Ordner mit 30 Aufnahmen auf der Festplatte habe, muss ich aktuell jede einzelnen davon öffnen und sie der Batch Datei hinzufügen. Da ich am Ende eh immer als Standard nur eine Tonspur und keinen Teletext oder Untertitel in der erstellten Datei speichere, wäre das dann eine enorme Zeitersparnis.

Zur Not müsste ich mir mal eine erstellte Batch Datei anschauen, vielleicht könnte ich mir da was basteln  :)

Danke und Grüße

Tri
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Cypheros am Januar 03, 2020, 12:45:25
Vielleicht hilft das?

TSDoctor.exe [Input Filename] [Command] [Option] [Output Filename]

Command: AUTOFIX (startet automatisch die Reparatur der Datei)
Command: AUTOCHECK (startet automatisch die Überprüfung der Datei)
Command: AUTOBATCH (startet automatisch die Batchverarbeitung der internen Batchliste)
Command: AUTODEMUX (startet automatisch das Demuxen der Datei)
Option: CROP=X (Beschneidet den Anfang der Datei um X MBytes beim Öffnen)
Option: LOG (Schreibt ein Log)

Beispiel:
"TSDoctor.exe" "D:\Aufnahme\*.ts" Autofix "D:\Archiv\"
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Trimonium am Januar 03, 2020, 13:40:57
Super, vielen Dank.

Ich schaue mir das mal genauer an und kann mir damit vielleicht was für eine automatisierte Lösung basteln.

Grüße

Tri
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Trimonium am Januar 03, 2020, 16:32:29
Zitat von: Cypheros am Januar 03, 2020, 12:45:25

Beispiel:
"TSDoctor.exe" "D:\Aufnahme\*.ts" Autofix "D:\Archiv\"

Das funktioniert so schon absolut perfekt für mich. Einfach alle Aufnahmedateien in den Startordner und alle gefixten Dateien in den Zielordner. Muss nur noch sehen ob ich das mit dem Zusatz "_Fixed" an der Zieldatei noch hinbekomme, ansonsten nehme ich da einfach das Bulk Rename Utility im Anschluss.

Bei mir hat sich in der letzten Zeit viel angesammelt und ich habe aktuell knapp 400 Dateien auf der Platte liegen, welche ich so mit viel weniger Stress durch den TS Doctor bekomme.  :)

Vielen Dank nochmals für deine Unterstützung.

Tri
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: shaka am Januar 05, 2020, 11:10:44
Hallo,

ich benutze dieses Script in einer BAT Datei:

Zitat
cd /D %~dp0
@FOR %%i IN (*.ts) do @(
           "C:\Program Files (x86)\Cypheros\TSDoctor3\tsdoctor.exe" "%%i" autocheck /log
)

Möglich dass es sogar aus diesem Forum stammt. Ist allerdings auf TSDoctor3 angepasst.

Alle Dateien mit der Endung .ts werden nach und nach geprüft, welche sich im selben Ordner befinden.

Ist mir eine RIESEN Hilfe.

Man kann auch diese Bat Datei in mehrere Ordner kopieren und mehrere Instanzen gleichzeitig laufen lassen, wenn euer System flott genug ist.

Gruß,

Shaka
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Januar 05, 2020, 17:27:54
Also, wir haben nun 2020, da sollten Batchdateien langsam aber sicher in die Tonne wandern. >:(

Hier mal dasselbe (etwas aufgehübscht) in Powershell


####################################################################
# Fingerübung, die alle TS Dateien in einem Verzeichnis (rekursiv!)
# einmal durch den TSDoc jagt und überprüfen lässt
# 05.01.2020 MAM
####################################################################

### Aufruf:
### powershell Skriptname [[-Pfad] Verzeichnis]
### (ohne Angabe wird das Verzeichnis durchsucht, wo das Script
### gespeichert ist)

param (
    [string]$Pfad=""
  )

### Wo versteckt sich der Doctor?

$TSDoc="${env:ProgramFiles(x86)}\Cypheros\TSDoctor3\TSdoctor.exe"

# wurde beim Start kein Verzeichnis angegeben?
if ($Pfad)
{
}
else
{
     # ok, dann nehmen wir eben unser eigenes
     $Pfad=$(Split-Path -Path $MyInvocation.MyCommand.Path)
     #
     # Alternativ kann man hier auch
     # $Pfad="."
     # reinmachen, um das aktuelle Verzeichnis zu wählen
     #
}

# Alle TS Dateien im Suchpfad ermitteln
Write-Host "Durchsuche $Pfad nach TS Dateien"

$Alle=Get-ChildItem $Pfad -Filter "*.ts" -recurse -Name

#
# und nun jede davon durch den Doc jagen mit den entsprechenden Parametern
# als kleine Kür messen wir noch die jeweilige Laufzeit und geben sie
# hinterher aus (auf Nanosekunden genau! :-) )
#
$Beginn=Get-Date
foreach ($i in $Alle){
    $Param=$i,"autocheck","/log"
    $StartZeit=Get-Date
    Write-Host $StartZeit.ToLongTimeString() "bearbeite" $Param
    & $TSDoc $Param | Out-Null
    $EndZeit=Get-Date
    Write-Host "Bearbeitungsdauer " ($Endzeit-$Startzeit) "Sekunden"
}
$Ende=Get-Date
Write-Host "--------------------------------------------------"
Write-Host "Gesamtdauer " ($Ende-$Beginn) "Sekunden"


Irgendwohin abspeichern als TSBatch.PS1 und dann aufrufen mit:

"powershell <Pfad>\TSBatch.PS1 [ [-Pfad] Verzeichnis]"

(sieht viel komplizierter aus, als es ist. Wenn man kein "-Pfad" angibt, wird, wie in der Batchdatei, das Verzeichnis genommen, in dem das Skript gepeichert ist (in den Kommentaren findet man, wie man das durch "das aktuelle Verzeichnis" ersetzen kann, das erscheint mir eigentlich sinnvoller)

Als Kür wird bei jedem Aufruf des Docs die Start und Endzeit gemessen und das Ergebnis für jeden einzelnen Aufruf, wie auch die gesamte Bearbeitungszeit gelistet.
Beispiel:
PS D:\test> .\TSBatch.ps1 .\
Durchsuche .\ nach TS Dateien
17:18:23 bearbeite 20191214 2307 - Kroymann - Der Geburtstag.ts autocheck /log
Bearbeitungsdauer  00:00:22.1923694 Sekunden
17:18:46 bearbeite 20200105 1127 - Die Sendung mit der Maus.ts autocheck /log
Bearbeitungsdauer  00:00:26.5310589 Sekunden
--------------------------------------------------
Gesamtdauer  00:00:48.7264311 Sekunden

(Um den Scheff zu ärgern haben wir mal als Zeitauflösung Picosekunden gewählt  8) )

Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: shaka am Januar 05, 2020, 22:52:33
Vielen Dank!  Das ist ganz interessant und ich werde mich mal irgendwann damit befassen müssen.

Aber ich bevorzuge "Keep it simple".  8)

In lediglich 6 Zeilen hier eine weitere Variante.  Diesmal werden nur die .TS Dateien gecheckt, die vorher noch nicht gecheckt wurden (check.log nicht vorhanden).


cd /D %~dp0
@FOR %%i IN (*.ts) do @(
            IF NOT EXIST "%%~dpi%%~ni_check.log" (
IF NOT EXIST "%%~dpi%%~ni__check.log" "C:\Program Files (x86)\Cypheros\TSDoctor3\tsdoctor.exe" "%%i" autocheck /log
    )
)


Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 12, 2020, 14:34:04
Hi Mam,

vielen Dank für das Script.
Funktioniert bei mir leider nicht ganz.
Wenn ich oben ein Verzeichnis z.B. e: wähle startet der Doc auch richtig
Durchsuche e: nach TS Dateien
14:24:23 bearbeite sr-71.ts autocheck /log
und gibt dann aber an "File not found."
Was läuft da falsch?

Da ich vor Programmierung keine Ahnung habe ist es mir auch nicht gelungen den Fehler durch Netzrecherche zu finden.
Vielleicht kannst Du mir weiterhelfen.

Ich versuche eine bat oder PS Datei zu erstellen die HDDs und Unterordner nach ts und TS4 Dateien durchsucht und repariert.
Da es sich um alte FAT 32 HDDs handelt müßte die Automatisierung auch das richtige Zusammenfügen enthalten.

Über Kommandozeile krieg ich das auch nicht hin. Dazu müßte ich sie selbst zusammenfügen bzw. alle Dateien aus den Ordnern holen.

Da kann ich sie auch gleich nacheinander durchlaufen lassen.

Vielen Dank schon mal für Deine Unterstützung.

Beste Grüße

Ingo
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Mai 12, 2020, 15:30:42
Zitat von: LED ZEPPELIN am Mai 12, 2020, 14:34:04
Was läuft da falsch?

Ich vermute mal "E:" ist das Problem.
Probier mal "E:\"
Das Skript erwartet ja Pfade, keine Laufwerksbuchstaben.
Er bastelt die Kommandozeile zusammen zu "E:" + "sr-71.ts" = "E:sr-71.ts".
Das sieht für uns Menschen so aus, als wenn das die Datei sr-171.ts" im Hauptverzeichnis vom Laufwerk E: sein soll, für den Computer ist das aber was ganz anderes.
Er speichert für jedes Laufwerk das "aktuelle Verzeichnis" ab (also da, wo Du gerade drinbist) und setzt den Pfad immer mit ein, wenn Du keinen selber angibts.
Also, wenn Du z.B. im Verzeichnis E:\Test wars, versucht er die Datei E:\Test\sr-71.ts zu öffnen, was dann wohl kläglich scheitert.

Trägst Du einen Suchpfad ein, der auf "\" endet, so wird diese Automatik deaktiviert.
"E:\" zwingt ihn also, wirklich ins Hauptverzeichnis zu gucken.
Probiers aus und sag Bescheid...
;D
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 12, 2020, 15:48:09
Funktioniert leider auch nicht.
Gut ist schon mal dass die Unterordner auch durchsucht werden.
Hast Du eine Idee wie ich das Problem mit dem Zusammenfügen löse?
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 12, 2020, 15:51:40
Wenn ich es ohne Veränderungen laufen lasse kommt diese Fehlermeldung:
Split-Path : Das Argument kann nicht an den Parameter "Path" gebunden werden, da es NULL ist.
In Zeile:27 Zeichen:31
+      $Pfad=$(Split-Path -Path $MyInvocation.MyCommand.Path)
+                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Split-Path], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.SplitPathCommand
Er startet dann aber trotzdem die Dateien in C: zu bearbeiten.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 12, 2020, 15:57:09
Was ich nicht ganz verstehe ist wie ich ins aktuelle Verzeichnis komme.
Bisher starte ich Dein Skript immer über Powershell direkt, da mir nicht klar ist wie ich es im entsprechenden Verzeichnis starten soll mit powershell <Pfad>\TSBatch.PS1 [ [-Pfad] Verzeichnis]"
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 12, 2020, 16:00:30
Folgende Fehlermeldung kommt:

PS C:\Users\ICH> e:\TSBatch.PS1
e:\TSBatch.PS1 : Die Datei "E:\TSBatch.PS1" kann nicht geladen werden, da die Ausführung von Skripts auf diesem System deaktiviert ist. Weitere Informationen finden Sie
unter "about_Execution_Policies" (https:/go.microsoft.com/fwlink/?LinkID=135170).
In Zeile:1 Zeichen:1
+ e:\TSBatch.PS1
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 12, 2020, 16:15:34
Hab die Datei wie angegeben unter e: gespeichert und auch zum Laufen bekommen über:
PS C:\WINDOWS\system32> e:\TSBatch.PS1
Durchsuche E:\ nach TS Dateien
16:08:16 bearbeite sr-71.ts autocheck /log
Bearbeitungsdauer  00:00:57.4653029 Sekunden
Leider nach Start des Doc wieder die Fehlermeldung Siehe Anhang
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Mai 12, 2020, 16:37:16
Zitat von: LED ZEPPELIN am Mai 12, 2020, 16:15:34
Hab die datei wie angegeben unter e: gespeichert und auch zum Laufen bekommen über:
PS C:\WINDOWS\system32> e:\TSBatch.PS1
Durchsuche E:\ nach TS Dateien
16:08:16 bearbeite sr-71.ts autocheck /log
Bearbeitungsdauer  00:00:57.4653029 Sekunden
Leider nach start des Doc wieder die Fehlermeldung Siehe Anhang
hmm, grübel....
Geh mal vorher auf e: (also nicht von C:\Windows\system32 aus starten, sondern erstmal "E:" eingeben und dann mit ".\TSBatch.PS1" starten)

Macht mich aber irgendwie stutzig... Berechtigungsprobleme???
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 12, 2020, 16:44:49
Das mit E: hat mit Deinem ursprünglichen Skript funktioniert.
Vielen Dank.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 12, 2020, 16:46:27
Ich möchte die Dateien aber fixen und auf eine andere HDD speichern lassen, also ersetze ich autockeck durch autofix in Deinem Skript denke ich.
Wie kann ich das Ausgabeverzeichnis ändern?
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Mai 12, 2020, 16:57:05
Zitat von: LED ZEPPELIN am Mai 12, 2020, 16:46:27
Ich möchte die Dateien aber fixen und auf eine andere HDD speichern lassen, also ersetze ich autockeck durch autofix in Deinem Skript denke ich.
Wie kann ich das Ausgabeverzeichnis ändern?
Da musst Du Scheffe fragen, ich benutze diesen Batchkram selber überhaupt nicht.

Das mit dem Starten aus dem Verzeichnis tut mir leid, Du solltest noch die Zeilen

...
# Alle TS Dateien im Suchpfad ermitteln
Write-Host "Durchsuche $Pfad nach TS Dateien"
Push-Location $Pfad
$Alle=Get-ChildItem $Pfad -Filter "*.ts" -recurse -Name
...

und ganz am Ende

Pop-Location

einbauen, dann setzt er das Arbeitsverzeichnis automatisch um und Du kannst es von überall her starten.

Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 12, 2020, 17:22:10
Versteh nicht ganz warum ich da noch was ändern soll wenns doch funktioniert?

Aber ich werd es mal testen um den Unterschied zu sehen.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Mai 12, 2020, 17:46:23
Zitat von: LED ZEPPELIN am Mai 12, 2020, 17:22:10
Versteh nicht ganz warum ich da noch was ändern soll wenns doch funktioniert?
Na die Änderung ist nur dafür da, dass Du vorher nicht extra nach E: wechseln musst, sondern das Skript von überall her starten kannst. So kannste Dir dann z.B. eine Verknüpfung aufs Desktop legen mit dem Befehl "powershell" und als Parameter "E:\TSBatch.PS1".
Dann kannste einfach n Doppelklick machen um es zu starten.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 12, 2020, 17:54:37
Oh cool.
Danke.
Wenn ich nur den Ausgabepfad noch geändert bekäme.
So macht das nicht viel Sinn weil die HDDs leer werden sollen um auf sie auf NTFS zu formatieren.

Die Problematik mit dem Zusammenfügen bleibt natürlich auch noch.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Mai 12, 2020, 18:04:46
Zitat von: LED ZEPPELIN am Mai 12, 2020, 17:54:37
Wenn ich nur den Ausgabepfad noch geändert bekäme.
Wie gesagt: keine Ahung  :-[

Aber, wenn er schon die Eingabedatei im aktuellen Pfad haben muss, um sie zu finden, befürchte ich, das wird nix mir der Ausgabedatei...

Warum verschiebst Du hinterher nicht einfach die Ergebnisdateien von Hand auf eine andere Platte? Der Aufwand ist ja nun wirklich nicht soooo groß...
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 12, 2020, 18:27:40
Weil die Platte voll ist und somit kein Platz für die Dateien.
Deshalb sollten sie ja per Stapelverarbeitung über Nacht auf eine neue. Inklusive Zusammenfügen etc.
Mal sehen ob der Meister sich noch mal zu Wort meldet mit einer Lösung.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 12, 2020, 19:08:03
In Antwort #1 steht doch, dass man den Ausgabepfad hinten an den TSDoctor-Aufruf dranhaengen kann.

Also aenderst Du im Script von Antwort #5 in der Zeile nach dem foreach pragmatisch
$Param=$i,"autocheck","/log" zu $Param=$i,"autocheck","/log","X:\Pfad\"
und setzt dabei "X" und "Pfad" entsprechend Deinen Wuenschen. Die Backslashes bitte nicht vergessen.

Mit etwas mehr Muehe/Aufwand (und/oder Einarbeitung in PoSh) kannst Du den Ausgabepfad auch noch als Variable gestalten, auf Gueltigkeit pruefen, usw. usf.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 12, 2020, 20:39:20
Vielen Dank.
Funktioniert sehr gut.
Jetzt brauche ich nur noch eine Lösung für das Zusammenfügen.
Evtl. eine Batchdatei für den File Merger?
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 12, 2020, 21:27:57
Ich versuchs jetzt gerade mit folgender Erklärung aus dem Netz:

Halten Sie [Umschalt] gedrückt und klicken Sie mit der rechten Maustaste in einen freien Bereich des Ordners.
Wählen Sie anschließend die Option "Eingabeaufforderung hier öffnen". Geben Sie anschließend den folgenden Befehl ein:
copy /b Film1.ts+Film2.ts+Film3.ts
Bestätigen Sie mit der Taste [Enter], werden die Dateien in einer Datei zusammengefügt.

Ich kriege immer wieder die gleiche Fehlermeldung
copy : Der Pfad "B:\b" kann nicht gefunden werden, da er nicht vorhanden ist.

Wenn ich b in Filmtitel ändere wird ein Ordner mit Namen Filmtitel erzeugt. Darin ist aber nix.

Was mache ich falsch?
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 12, 2020, 22:07:14
Zuerst einmal kann man mit "copy /?" auf der geoeffneten Eingabeaufforderung eine Hilfefeinformation abfragen. Die erklaert auch gleich die Parameter des copy-Befehls. Als Hinweise hier nur: Leerzeichen in der Kommandozeile sind NICHT unnoetig, sie dienen der Trennung der einzelnen Parameter und duerfen nicht einfach weggelassen werden. Die Angabe eines Zieldateinamens (insbesondere wenn wie hier auf ein anderes Laufwerk kopiert werden soll) ist sinnvoll.
Ferner solltest Du, damit irgendwelche Fehlermeldungen hier beurteilt werden koennen, den tatsaechlichen von Dir verwendeten Befehl mit angeben, und nicht nur den Text aus einer Anleitung.

Aber dann ist das Ergebnis eines solchen binaeren Kopierens abhaengig davon, was als Eingabedateien vorliegt, und klappt deswegen vornehmlich, um die Gesamt-Datei danach abspielen zu koennen, aber nicht, um sie fuer irgendwelche Schneide- oder gar Pruefoperationen zu verwenden.

Ein grosser Vorteil des TSDoctor ist eigentlich, dass er auch zusammengehoerige Dateien einer Aufnahme von alleine erkennt, und man dann nur die erste Datei angeben muss. Das kann er sogar dermassen gut, dass auch komplizierte Aufteilungen (z.B. ALi-Format) (meist) korrekt bearbeitet werden.

Vielleicht koennte es helfen, wenn Du mal ein Dateilisting eines Quellverzeichnisses hier postest. Direkt auf der Eingabeaufforderung einfach mal dir /ogn /r > Dateiliste.txt eingeben, und die dabei erstellte Datei "Dateiliste.txt" dann hier (ggfs. gepackt) posten.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 13, 2020, 09:55:44
Okay.
Dann hier also der Originaltext den ich eingebe: PS I:\Der große Gatsby> copy /b Der große Gatsby.ts+Der große Gatsby1.ts+Der große Gatsby2.ts
Da kommt zwar keine Fehlermeldung, es passiert aber auch sonst nix.

Habe mal das Verzeichnis gewechselt da ich das Verzeichnis von gestern auch nicht auslesen kann weil der Zugriff verweigert wird. Warum auch immer. Die HDD ist nicht gesperrt oder sonstiges und mit dem Doc auch normal ansprechbar und die Dateien können bearbeitet werden.

Im Anhang die Textdatei des Verzeichnis und ein Bild der Dateien aus dem Ordner.
Die wird aber nicht viel nützen da die Inhalte der Ordner nicht angegeben sind.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Mai 13, 2020, 10:03:57
ääh, ja, ist ok so  ;D

Das liegt daran, dass mein Skript in POWERSHELL läuft, man Dir aber hier die (falschen) Tipps mit "copy..." gibt, die nur in der alten Kommandooberfläche Gültigkeit haben.

(da war doch was mit Äpfeln und Birnen...)

Leider gibt es in der Powershell keinen direkten Ersatz für "copy /b", Du musst Dich deshalb mit dem etwas merkwürdigen Konstrukt

cmd /c copy /b ....(der bekannte Rest)

behelfen. Das startet innerhalb der Powershell eine alte Kommandozeile und führt mit der den Copy Befehl aus. Anschließend wird die Kommandozeile wieder automatisch beendet und Powershell läuft normal weiter.

Ich gebe zu, das ist etwas krumpelig, aber es gab gute Gründe "copy /b" ersatzlos zu streichen. Es wurde einfach damit zuviel Unsinn getrieben.



Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 13, 2020, 10:17:26
Vielen Dank.
Ich habe jetzt folgendes gemacht.
PS im Ordner geöffnet und
PS I:\Der große Gatsby> cmd /c copy /b Der große Gatsby.TS+Der große Gatsby1.TS+Der große Gatsby2.TS
eingegeben.
Ergebnis:
Das System kann die angegebene Datei nicht finden.

Ich verzweifel hier langsam.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Mai 13, 2020, 10:21:19
Zitat von: LED ZEPPELIN am Mai 13, 2020, 10:17:26
Vielen Dank.
Ich habe jetzt folgendes gemacht.
PS im Ordner geöffnet und
PS I:\Der große Gatsby> cmd /c copy /b Der große Gatsby.TS+Der große Gatsby1.TS+Der große Gatsby2.TS
eingegeben.
Ergebnis:
Das System kann die angegebene Datei nicht finden.

Ich verzweifel hier langsam.

Never give up!  ;D

Das konnte mal wieder nicht klappen, weil die Dateinamen Leerzeichen enthalten. Du musst sie dann immer in Anführungszeichen packen:

cmd /c copy /b "Der große Gatsby.TS"+"Der große Gatsby1.TS"+"Der große Gatsby2.TS" <HIER FEHLT NOCH DIE ZIELDATEI!!!>

Ausserdem hast Du am Ende vergessen, einen Pfad/Namen für die Zieldatei anzugeben!

(Aber, wie schon hier erwähnt, wozu brauchst Du das eigentlich? Der Doc fügt die Dateien automatisch zusammen...)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 13, 2020, 11:28:40
Werde ich später mal testen.
Deine Frage ist berechtigt.

Ich suche nach einer Möglichkeit die Dateien automatisiert zusammenzufügen um sie dann mit deinem Skript abarbeiten zu können.

Dabei bin ich über die Zeile oben gestolpert und wollte es mal versuchen.

Problem ist natürlich, dass ich so immer alles manuell eingeben muss.
Da hast Du recht, das kann ich dann auch gleich über den Doc machen.

Aber ich hoffe immernoch auf ein PS Skript mit dem ich alle Ordner auslesen und die Dateien zusammenfügen kann.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 13, 2020, 12:03:53
Versuch's mal damit:
# 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!" }


Danach musst Du dann das andere Script ueber das Zielverzeichnis laufen lassen.

Das Script verwendet ein paar Vermutungen aus Deinen bisher getaetigten Aeusserungen; auf die gestellten Fragen gehst Du ja nur minimal bis gar nicht ein ;-)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 13, 2020, 12:11:01
Warum.
Welche Frage habe ich nicht beantwortet?
War keine Absicht.
Liegt wohl an meiner zunehmenden Verwirrung durch zu viel Programmiersprachenstudium.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 13, 2020, 12:23:53
Habs mal laufen lassen.
Nur das Zielverzeichnis angelegt und den Pfad entsprechend angepasst.
Hier das Ergebnis.
PS C:\Users\ICH> # Quellverzeichnis mit Ordnern
>> >> $Quelle = "I:\"
>> >>
>> >> # Zielverzeichnis der .ts Ausgabedatei(en)
>> >> $Ziel = "P:\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!" }
In Zeile:18 Zeichen:30
+ >>         foreach ( $ordner in $folders ) {
+                              ~~
Unerwartetes Token "in" in Ausdruck oder Anweisung.
In Zeile:18 Zeichen:29
+ >>         foreach ( $ordner in $folders ) {
+                             ~
Schließende ")" fehlt in einem Ausdruck.
In Zeile:17 Zeichen:36
+ >>     if ( $folders.Count -ne 0 ) {
+                                    ~
Die schließende "}" fehlt im Anweisungsblock oder der Typdefinition.
In Zeile:11 Zeichen:53
+ >> if ( Test-Path -Path $Ziel -PathType Container ) {
+                                                     ~
Die schließende "}" fehlt im Anweisungsblock oder der Typdefinition.
In Zeile:18 Zeichen:42
+ >>         foreach ( $ordner in $folders ) {
+                                          ~
Unerwartetes Token ")" in Ausdruck oder Anweisung.
In Zeile:40 Zeichen:8
+ >>     } else { Write-Host "Keine Ordner in $Quelle gefunden." }
+        ~
Unerwartetes Token "}" in Ausdruck oder Anweisung.
In Zeile:41 Zeichen:4
+ >> } else { Write-Host "Zielverzeichnis $Ziel existiert nicht!" }
+    ~
Unerwartetes Token "}" in Ausdruck oder Anweisung.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken

PS C:\Users\ICH> # Quellverzeichnis mit Ordnern
PS C:\Users\ICH> >> $Quelle = "I:\"
>> : Die Benennung ">>" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren
Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und
wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:1
+ >> $Quelle = "I:\"
+ ~~
    + CategoryInfo          : ObjectNotFound: (>>:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\Users\ICH> >>
>> : Die Benennung ">>" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren
Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und
wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:1
+ >>
+ ~~
    + CategoryInfo          : ObjectNotFound: (>>:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\Users\ICH> >> # Zielverzeichnis der .ts Ausgabedatei(en)
>> : Die Benennung ">>" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren
Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und
wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:1
+ >> # Zielverzeichnis der .ts Ausgabedatei(en)
+ ~~
    + CategoryInfo          : ObjectNotFound: (>>:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\Users\ICH> >> $Ziel = "P:\ZielOrdner"
>> : Die Benennung ">>" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren
Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und
wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:1
+ >> $Ziel = "P:\ZielOrdner"
+ ~~
    + CategoryInfo          : ObjectNotFound: (>>:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\Users\ICH> >>
>> : Die Benennung ">>" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren
Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und
wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:1
+ >>
+ ~~
    + CategoryInfo          : ObjectNotFound: (>>:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\Users\ICH> >> # falls "\" am Ende von Ziel vergessen
>> : Die Benennung ">>" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren
Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und
wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:1
+ >> # falls "\" am Ende von Ziel vergessen
+ ~~
    + CategoryInfo          : ObjectNotFound: (>>:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\Users\ICH> >> if ( $Ziel.Substring($Ziel.Length-1) -ne "\" ) { $Ziel += "\" }
>> : Die Benennung ">>" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren
Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und
wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:1
+ >> if ( $Ziel.Substring($Ziel.Length-1) -ne "\" ) { $Ziel += "\" }
+ ~~
    + CategoryInfo          : ObjectNotFound: (>>:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\Users\ICH> >>
>> : Die Benennung ">>" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren
Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und
wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:1
+ >>
+ ~~
    + CategoryInfo          : ObjectNotFound: (>>:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\Users\ICH> >> # falls Zielverzeichnis existiert
>> : Die Benennung ">>" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren
Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und
wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:1
+ >> # falls Zielverzeichnis existiert
+ ~~
    + CategoryInfo          : ObjectNotFound: (>>:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\Users\ICH> >> 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..."
>> >>             }
>> >>         }
In Zeile:8 Zeichen:30
+ >>         foreach ( $ordner in $folders ) {
+                              ~~
Unerwartetes Token "in" in Ausdruck oder Anweisung.
In Zeile:8 Zeichen:29
+ >>         foreach ( $ordner in $folders ) {
+                             ~
Schließende ")" fehlt in einem Ausdruck.
In Zeile:7 Zeichen:36
+ >>     if ( $folders.Count -ne 0 ) {
+                                    ~
Die schließende "}" fehlt im Anweisungsblock oder der Typdefinition.
In Zeile:1 Zeichen:53
+ >> if ( Test-Path -Path $Ziel -PathType Container ) {
+                                                     ~
Die schließende "}" fehlt im Anweisungsblock oder der Typdefinition.
In Zeile:8 Zeichen:42
+ >>         foreach ( $ordner in $folders ) {
+                                          ~
Unerwartetes Token ")" in Ausdruck oder Anweisung.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken

PS C:\Users\ICH> >>     } else { Write-Host "Keine Ordner in $Quelle gefunden." }
In Zeile:1 Zeichen:8
+ >>     } else { Write-Host "Keine Ordner in $Quelle gefunden." }
+        ~
Unerwartetes Token "}" in Ausdruck oder Anweisung.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken

PS C:\Users\ICH> >> } else { Write-Host "Zielverzeichnis $Ziel existiert nicht!" }
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 13, 2020, 12:33:12
Nein, Du hast es nicht laufenlassen, sondern einfach mal auf den PoSh-Prompt kopiert, denke ich :-)

Bitte das Script speichern als irgendwas.ps1 (so wie das andere Script auch), und dann das irgendwas.ps1 in der PoSh ausfuehren.

Mit den unbeantworteten Fragen beziehe mich auf das Directory-Listing, den weggelassenen Zieldateinamen, ...
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 13, 2020, 12:38:01
Richtig.
Das habe ich noch nicht beantwortet.
Ich versuch jetzt erst mal das umzusetzen was Du gerade geschrieben hast.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Mai 13, 2020, 12:44:43
lol  ;D
So langsam wird es etwas unübersichtlich  8)

Gemäß dem Motto: "wo ich bin herrscht Chaos!   :P" (aber, ich kann nicht überall gleichzeitig sein  :-* )
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 13, 2020, 13:49:45
Ach kommt Leute so viel Chaos verbreite ich auch wieder nicht.
Ich versuch hier Home Office Multitasking mit Home Schooling und habe null Ahnung von Programmierung.
Habe halt was einfaches studiert und nix so komplexes wie ihr hier.

Jetzt mal der Reihe nach.
Das Skript von Mam habe ich jetzt zum laufen gebracht und das neue Skript von tsduser funktioniert auch perfekt.
Es kommt wohl auf die PS Version an in die man es kopiert.
Speichern lies es sich über PS aber nicht.

Vielen Vielen Dank Euch beiden.

Kann ich mich irgendwie erkenntlich zeigen?
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 13, 2020, 14:05:30
Nein, alles kein Problem.  :D

Wenn Du hier durch die Threads schaust, stellst Du sicher fest, dass der Ton hier im Forum an einigen Stellen schon rauher ist als anderswo in der Forenwelt... (vielleicht auch weniger rauh, aber solche Foren kenne ICH dann nicht).

Aber zumindest fuer mich ist das Feedback, dass alles jetzt wie gewuenscht laeuft, Belohnung genug. Auch dies ist bereits mehr, als man von etlichen anderen bekommt.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 13, 2020, 14:16:17
Zwei Frage hätte ich noch:
Wie muss ich das Skript anpassen damit auch TS4 Dateien zusammengefügt werden?
Und können diese dann auch als TS ausgegeben werden oder nur als TS4?

Habe noch sehr viel altes TS4 Material von meinem Technisat HDS 2+ hier auf den HDDs wie ich gerade feststellen mußte.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 13, 2020, 14:20:06
So rauh geht es hier auch nicht zu.
Aber sicher etwas derber als in anderen Foren, das ist richtig.
Wer das nicht abkann sollte halt nicht posten.
Mir war das schon vorher klar da ich fast alles Postings zu den Themen Batchdatei und Commandline gelesen habe.
Bin ehrlich gesagt davon ausgegangen dass ich hier wegen meiner Blödheit in Bezug auf cmd und PS deutlich angegangen werde.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 13, 2020, 14:35:54
Na, dann gehe ich mal vorsichtig davon aus, dass das kein Flehen eines Masochisten nach haerterer Bestrafung ist  :)
Sonst wuerde ich den Sadisten raushaengen lassen, und diese Bestrafung verweigern  ;D

Im Script muesstest Du nur in den Zeilen 24 und 28 ".ts" nach ".ts4" aendern.

Ob die Zieldateien wirklich verwendbar sind, kannst Du ja vorab testen auf einer Eingabeaufforderung (nicht in der PowerShell) mit copy /b "I:\Quellordner\Datei1.ts4" + "I:\Quellordner\Datei2.ts4" "P:\Zielordner\Zieldatei.ts4"
...und durch Sichtkontrolle der Zieldatei (insbesondere der Nahtstelle) in Deinem Wiedergabegeraet.

Alle weiteren, eigentlich notwendigen Details zu Containerformaten, Countern, Timern, usw. wuerden jetzt den Rahmen dieses ja sowieso gekaperten Threads nur sprengen, fuerchte ich.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 13, 2020, 15:37:16
Danke.
Test läuft. Ich lasse auch gleich als ".ts" ausgeben.
Melde mich später mit dem Ergebnis.
Muss jetzt weg.

Dann doch noch was:
Wie kann ich der Zeile beibringen, dass sie auch die Unterordner durchsucht?
TSDoctor.exe E:\*.ts Autofix D:\
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 13, 2020, 15:46:32
Zitat von: LED ZEPPELINWie kann ich der Zeile beibringen, dass sie auch die Unterordner durchsucht?
TSDoctor.exe E:\*.ts Autofix D:\
Durch lautstarkes Betteln beim "Cheffe" Cypheros, oder durch den Einwurf groesserer Mengen kleinerer Muenzen an derselben Stelle, denn hier kuemmert sich das aufgerufene Programm (TSDoctor.exe) um das Einsammeln der auf das Suchmuster (E:\*.ts) passenden Eingabedateien.

Ansonsten findet sich eine Loesung dieser Frage doch in dem Script, das Mam hier postete, und ueber das Ihr Euch bereits austauschtet...
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Mai 13, 2020, 16:05:54
Zitat von: LED ZEPPELIN am Mai 13, 2020, 13:49:45
Kann ich mich irgendwie erkenntlich zeigen?
Wofür?
Es ist ja keine Schande, nix zu wissen. Die Schande entsteht erst, wenn man auch nicht bereit ist, was zu lernen.
Insofern ist der "rauhere Ton" a) meine persönliche Attitüde und b) geprägt vom Frust der allseits unwilligen.

Mein Skript geht schon rekursiv durch alle Unterverzeichnisse der angegebenene Quelle. Du brauchst also NIX zu ändern.
(wobei ich mal hoffnungsvoll davon ausgehe, dass der Doc auch mit Pfadangaben umgehen kann, wie gesagt, Batchmodus ist bei mir nicht im Einsatz)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 13, 2020, 18:46:58
Hat soweit funktioniert. Am Filmende springt die Datei aber laut Zeitspur um 23 Minuten. Seltsam aber nicht schlimm. Asynchron ist sie nicht.

Ich mache aber noch einen Vergleich mit der gleichen Datei wenn ich sie durch den Doc gejagt habe.


Stimmt, für die Unterordner habe ich das Skript. Wollte nur wissen ob es da auch eine Variante über cmd gibt.

Noch eine Frage zum Skript zum Zusammenfügen.

Wie kann man das dazu bringen zu stoppen wenn die HDD voll ist.
Mir ist gerade aufgefallen, das bei voller HDD einfach Dateien überschrieben werden die vorher erzeugt wurden.
Irgendwie blöd wenn diese nachdem sie zusammengefügt wurden einfach wieder überschrieben werden finde ich.
Oder muss ich immer genügend Speicherplatz vorhalten da ein Autostopp nicht funktioniert?
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 14, 2020, 08:58:29
Selbstverstaendlich gibt's da auch fuer cmd eine Variante. Dazu muss das Batch-Script z.B. von shaka (auch auf der ersten Seite dieses Threads) ein wenig erweitert werden.

Dateien werden ueberschrieben? Das kann ich mir nicht vorstellen. Kannst Du das bitte nochmal genau pruefen?
Zum einen macht der DOS-copy so etwas per se schon einmal nicht (ausser, man gibt ihm den Parameter /Y mit), und zum anderen habe ich in meinem Script extra eine Abfrage drin, die das Vorhandensein einer Zieldatei ueberprueft. Und ein Loeschen ist nirgends vorgesehen.
Sollte das also bei Dir tatsechlich passieren, dann laeuft dort etwas anderes verkehrt...

Stimmt, eine Platzabfrage habe ich nicht drin im Script. Koennte man einerseits als (weitere) Fingeruebung implementieren, oder andererseits einfach mal VOR Ausfuehrung mit dem Windows-Explorer (oder dir /s in der Eingabeaufforderung) die Menge der zu bearbeitenden Dateien ermitteln, und dann schauen, ob genau soviel freier Platz auf dem Ziellaufwerk vorhanden ist. Weil ja binaer kopiert wird, kann man hier tatsaechlich Quellmenge = Zielmenge (plus/minus, eher minus, ein paar Kilobytes) ansetzen.

Ein bischen laestig bei vielen Verzeichnissen aber als Abbruchoption nutzbar ist ja auch die auskommentierte Zeile mit dem Read-Host im Script, die nach jedem bearbeiteten Verzeichnis auf <Enter> (oder eben <Ctrl-C>) warten lassen wuerde. Die kannst Du vor der Ausfuehrung "entkommentieren", d.h. die Raute am Zeilenanfang loeschen.
Ebenso koennte man das Script ueber die PoSh ISE ausfuehren, und dort zum gewuenschten Zeitpunkt einfach auf den Stopp-Button klicken.

Es gibt immer viele Wege, die einen an's Ziel fuehren  ;)

Kleiner Nachtrag, weil's so einfach ist:
In shaka's Script ersetzt Du die "FOR"-Zeile durch (bitte Leer- und Anfuehrungszeichen korrekt beachten)
@FOR /F " usebackq delims==" %%i IN (`dir /b /s *.ts`) do @(
, dann wird ab dem verwendeten Verzeichnis "abwaerts" alles bearbeitet.

Zweiter Nachtrag (die Fingeruebung)
            # Ziellaufwerk
            $ZielLW = Split-Path -Qualifier $Ziel
            # Datenmenge summieren
            $Datenmenge = ( Get-ChildItem -File -Path $files | Measure-Object Length -Sum ).Sum
            # Freier Platz auf Ziellaufwerk
            $freierPlatz = ( Get-WMIObject Win32_LogicalDisk -filter "name='$ZielLW'" ).FreeSpace
            if ( $Datenmenge -gt $freierPlatz ) { Read-Host -Prompt "Freier Platz auf Ziel $ZielLW reicht nicht aus!`r`nAbbruch mit <Ctrl-C>, trotzdem weiter mit <Enter>." }

einfuegen zwischen
            # Suchmaske fuer Dateien im Ordner
            $files = $ordner.FullName + "\*.ts"
***  H I E R ***
            # falls weder Zieldatei noch getestete Zieldatei vorhanden sind...
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 14, 2020, 20:29:13
Jetzt wird es langsam komplex.

Aber eins nach dem Anderen. Auf die Idee vorher die Größe der Daten zu checken bin ich gestern auch noch gekommen. Schande über mein Haupt dass ich da nicht sofort dran gedacht habe. Kann ja einfach einen Ordner mit der entsprechenden Größe anlegen und das Skript nur diesen bearbeiten lassen.

Das Überschreiben findet definitiv statt. Ich stand davor als die Ziel HDD voll war und konnte sehen wir das Skript immer neue Ordner in PS angezeigt hat und immer neue cmd Fenster aufgingen. Hab mir die HDD gerade auch noch mal angesehen und die letzten Ordner bevor sie voll war sind nicht mehr drauf sondern neue. Aber wie oben schon geschrieben ist das lösbar denke ich.

In PoSh ISE hab ich es nicht zum laufen gebracht und konnte es somit auch nur über Tastaturbefehl stoppen.

Ich habe das Skript von Shaka nicht genutzt bisher, aber mit Deiner Änderung sollte es so aussehen denke ich:
cd /D %~dp0
@FOR /F " usebackq delims==" %%i IN (`dir /b /s *.ts`) do @(
           "C:\Program Files (x86)\Cypheros\TSDoctor3\tsdoctor.exe" "%%i" autocheck /log
)

Dein Skript sieht bei mir jetzt wie folgt aus:
# Quellverzeichnis mit Ordnern
>> $Quelle = "I:\"
>>
>> # Zielverzeichnis der .ts Ausgabedatei(en)
>> $Ziel = "P:\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"
>>       # Ziellaufwerk
            $ZielLW = Split-Path -Qualifier $Ziel
            # Datenmenge summieren
            $Datenmenge = ( Get-ChildItem -File -Path $files | Measure-Object Length -Sum ).Sum
            # Freier Platz auf Ziellaufwerk
            $freierPlatz = ( Get-WMIObject Win32_LogicalDisk -filter "name='$ZielLW'" ).FreeSpace
            if ( $Datenmenge -gt $freierPlatz ) { Read-Host -Prompt "Freier Platz auf Ziel $ZielLW reicht nicht aus!`r`nAbbruch mit <Ctrl-C>, trotzdem weiter mit <Enter>." }
>>             # 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!" }

Die Änderungen in den Skript werde ich Morgen oder am WE testen und berichten. Schaffe ich heute nicht mehr. Sorry
Vielen Dank schon mal dafür.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 18, 2020, 11:46:28
Leider ist mir meine 3TB HDD am Freitag abgeraucht. Somit im Moment kein Test möglich.
Mit etwas Glück sollte die HDD bis morgen gesichert sein. Evtl . geht dann wieder was.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Mai 18, 2020, 11:53:40
Zitat von: LED ZEPPELIN am Mai 18, 2020, 11:46:28
Leider ist mir meine 3TB HDD am Freitag abgeraucht. Somit im Moment kein Test möglich.
Jaja, manchmal verliert man, manchmal gewinnen die Anderen...  8)

Übrigens: 3TB Disks waren immer nur Abfall. Zuviel kapput für 4TB, da wurden einfach nur ein paar Sektoren "lahmgelegt". (Dasselbe gilt für 5Tb Disk, das ist der Schrott der 6Tb Generation)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 18, 2020, 12:42:17
Wenn das die Zielplatte war, dann waere das auch eine moegliche Erklaerung fuer die "ueberschriebenen" Dateien...
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 18, 2020, 16:20:26
Danke für die Infos bezüglich 3TB und 5 TB. Leider zu spät.
Habe einige 3er und eine 5er.

Nein, dass war nicht die Zielplatte.
War voll mit Filmen und sollte ins Gehäuse.
Wurde natürlich nicht erkannt da bei MBR ja mit 2TB Schluss ist.
Über extern aber erkannt und MBR ohne Datenverlust in GPT geändert.
Dann wieder intern versucht und wieder nur mit 2TB erkannt. Nocghmal GPT versucht und seitdem wird sie mit 16TB angfezeigt ohne Zugriff.
Testdisk und photorec haben zwar Daten retten können, aber alles ohne Namen.
Nützt mir gar nix wenn ich keine Filmnamen habe. Schon gar nicht da die HDD auch noch mit FAT32 formatiert war und somit die Filme auch noch in mehreren Teilen vorliegen.
EasUS Data Recovery scheint zu funktioniern. Bisher werden Ordner mit Filmen angezeigt.
Hoffe die lassen sich auch alle wiederherstellen.
Da kommt dann schon das nächste Problem.
Das Programm ist jetzt bei 56% und hat schon 4,3 TB Daten gefunden. Wohin ich das alles sichern soll ist mir ein Rätsel. Haben nur eine 3TB leer geräumt. Mehr Platz ist nicht vorhanden.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 18, 2020, 16:22:43

Und da ich eben mit diesem Prozeß beschäftigt bin habe ich noch keine Zeit und vor allem Geduld gefunden mich weiter mit den Skripten zu beschäftigen.
Hoffe ihr habt dafür Verständnis.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Mai 18, 2020, 16:25:43
aaah, ja, noch so eine, offensichtlich wichtige, Info: Die 3 & 5 Tb Platten funktionieren NUR im externen Gehäuse. Der Controller dort kennt ihre Macken und verwendet die defekten Spuren nicht.
Packt man so ein Laufwerk einfach in den Rechner, passiert BÖSES (ok, DEN Teil hast Du ja schon selber rausgefunden  ;D )

Lass mich raten, die Platten sind GRÜN und da steht irgendwo "WD" druff ?  ;D

Seh es positiv: Du wirst die Skripte nicht mehr brauchen  8)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 18, 2020, 16:34:46
No. Steht Seagate drauf.
Eine 3TB habe ich schon intern ohne Probleme angeschlossen.
Warum sollte ich die Skripten nicht mehr brauchen?
Habe ja noch ca. 35 TB mehr mit Filmen. Und so wies es aussieht lassen sich die daten ja möglicherweise retten.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Mai 18, 2020, 16:42:51
Zitat von: LED ZEPPELIN am Mai 18, 2020, 16:34:46
No. Steht Seagate drauf.
Eine 3TB habe ich schon intern ohne Probleme angeschlossen.
Warum sollte ich die Skripten nicht mehr brauchen?
Habe ja noch ca. 35 TB mehr mit Filmen. Und so wies es aussieht lassen sich die daten ja möglicherweise retten.
Hmm, wusste gar nicht, dass Seagate auch die "räumt den Schrott raus!" Phase hatte. Aber ich geb zu, von denen hab ich hier auch nicht viele rumfliegen (oder? hmm, überhaupt eine? ? ?)
Wenn Du 35Tb in solch handlichen Portionen hast, bist Du ja bis Weihnachten beschäftigt  ;D
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 18, 2020, 17:03:52
Wenn auch viel Wahres an Mam's Aeusserungen ist, so ist manches doch einfach auch nur voellig falsch.

So ist es z.B. gang und gaebe, dass ein Festplattenhersteller zur Komplettierung des Angebots einfach mal z.B. neben 2 und 4 TB ein Modell mit 3TB herausgebracht hat, das voellig in Ordnung ist; ausser, dass man einfach einen (teuren) Schreib-/Lesekopf im Gehaeuse eingespart hat.

Die Aussage, dass 3 und 5 TB nur extern funktionieren wuerden, ist dagegen vollkommen falsch, ebenso wie die Behauptung, dass es sich dabei per se um fehlerhafte Geraete handele (s.o.). Wie Du ja selber gemerkt hast, funktionieren die auch intern recht gut. Wo es allerdings Probleme gibt, ist dann, wenn der (USB-SATA-)Controller im externen Gehaeuse ein wenig "Intelligenz" mitbringt, und die Festplatte "anders" anspricht als der interne Adapter. Dann kann man eine solche Platte voellig problemlos intern wie extern betreiben, muss sie nur immer jeweils erst einmal wieder initialisieren. Und dann sind die Daten darauf natuerlich wech. (Deine Vermutung hinsichtlich MBR/GPT ist da bestimmt zielfuehrend, denn so gibt es tatsaechlich Moeglichkeiten, eine [bis zu knapp unter] 4TB-Platte mit MBR zu verwenden.)

Diese Probleme kannst Du ebenso bekommen, wenn Du die Platte in unterschiedliche externe Gehaeuse packst, oder an unterschiedliche interne Controller haengst. Geht meistens gut, aber manchmal eben nicht.

Ob Du mit den Daten, die PhotoRec, Easeus oder sonst ein Tool meint, von der Platte zu kratzen, ueberhaupt irgendwas wirst anfangen koennen, ist nach den bereits vorgenommenen Schritten eher fraglich bis unwahrscheinlich, insbesondere wegen der "unkonventionellen" Adressierung im externen Gehaeuse. Die haben vielleicht einen Datenverwaltungsbereich gefunden, aber zu den Daten selber ist dann noch ein weiter Weg. Trotzdem viel Glueck!

Hinsichtlich der ueberschriebenen Dateien bin ich dann mal auf mehr Infos von Dir gespannt.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Mai 18, 2020, 17:34:02
Zitat von: tsduser am Mai 18, 2020, 17:03:52
Die Aussage, dass 3 und 5 TB nur extern funktionieren wuerden, ist dagegen vollkommen falsch, ebenso wie die Behauptung, dass es sich dabei per se um fehlerhafte Geraete handele (s.o.).
Ich hatte hier ein paar alte WD-Books (3Tb) zur Verfügung stellen. Die Platten haben eine Firmware, so dass sie NUR an dem WD Book Controller funktionieren. Und wenn man das 3Tb Label anlupft, so ist darunter ein Aufkleber mit 4Tb...
Die Dinger sind leider schon lange entsorgt, insofern kann ich die Beweise nicht mehr zur Verfügung stellen.

(nein, die Dinger waren nicht nur einfach verschlüsselt, man konnte sie auch am PC nicht neu initialisieren. Im Book gingen sie aber weiterhin, selbst, wenn man die Gehäuse getauscht hatte)
Waren reine, externe, Backupplatten (und Windows hat auch automatisch immer noch einen speziellen Treiber fürs Backup mit hinzuinstalliert).

Aber egal, ich hab auch keine Hoffnung bei seinem Datenrekonstruktionsversuch. Wenn da schon mal 16Tb angezeigt wurden, sind einige Zeiger verdreht worden und die Daten wohl nachhaltig verloren. Deshalb auch das Überschreiben der Dateien.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 18, 2020, 17:37:41
Ja, stimmt, besondere Firmware-Versionen (und manchmal sogar voellig aus der Reihe fallende Sektorgroessen neben 512 bzw. 4096 Bytes) sind weitere moegliche Stolpersteine neben dem Controller, wenn man Platten umbauen moechte. Die Hersteller sind da traurigerweise sehr erfinderisch  :'( :'( :'(
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 19, 2020, 11:13:48
Das Überschreiben der Dateien war auf einer anderen HDD. Das hatte mit der kaputten gar nichts zu tun.

Da ich noch eine Liste der Filme der geschrotteten HDD hatte habe ich bisher alles wiederherstellen können.
Für Euch zwei und mich lasse ich auch mal ein paar eigentlich schon gelöschte bzw. überschriebene Daten wiederherstellen um zu sehen in weit diese noch brauchbar sind.
Bisher waren die Dateien auch alle brauchbar. Habe natürlich nur Stichproben machen können.
Das die Alle kaputt sind habe ich ohnehin nicht angenommen, da ja nur der Bootsektor geschrottet wurde.
Hatte ich vor Jahren schon mal und konnte alles retten.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Mai 19, 2020, 11:15:48
Na ja, Deine Infos sind etwas sprunghaft, da kann man schon durcheinander kommen  ;D
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 22, 2020, 13:25:25
Hier mal die neuesten Infos.
Alle Dateien wieder da. Nur brauchen sie mehr Platz als vorher.
Soll heißen, es gehen nicht mehr alle Filme die vorher auf der Platte waren auf eine 3TB HDD obwohl sie vorher auf einer drauf waren.
Keine Ahnung warum.
Das Verzeichnis mit den Filmen hatte ich mit Powershell direkt aus der HDD ausgelesen.
Sehr seltsam.
Aber egal.
Von den Dateien die bereits überschrieben waren konnte ich etwa die Hälfte wieder herstellen und auch ansehen bzw hören. Der Rest war unbrauchbar.
Dies ist die klare Bestätigung für mich, das man HDDs x-fach überschreiben muss um alte Daten wirklich unlesbar zu machen.

Nun zum Skript:
Ich habe folgendes in Powershell ISE eingetragen und das Ergebnis unten erhalten:
PS C:\Users\ICH> # Quellverzeichnis mit Ordnern
>> $Quelle = "N:\"
>>
>> # Zielverzeichnis der .ts Ausgabedatei(en)
>> $Ziel = "L:\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"
>>       # Ziellaufwerk
            $ZielLW = Split-Path -Qualifier $Ziel
            # Datenmenge summieren
            $Datenmenge = ( Get-ChildItem -File -Path $files | Measure-Object Length -Sum ).Sum
            # Freier Platz auf Ziellaufwerk
            $freierPlatz = ( Get-WMIObject Win32_LogicalDisk -filter "name='$ZielLW'" ).FreeSpace
            if ( $Datenmenge -gt $freierPlatz ) { Read-Host -Prompt "Freier Platz auf Ziel $ZielLW reicht nicht aus!`r`nAbbruch mit <Ctrl-C>, trotzdem weiter mit <Enter>." }
>>             # 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!" }
In Zeile:18 Zeichen:30
+ >>         foreach ( $ordner in $folders ) {
+                              ~~
Unerwartetes Token "in" in Ausdruck oder Anweisung.
In Zeile:18 Zeichen:29
+ >>         foreach ( $ordner in $folders ) {
+                             ~
Schließende ")" fehlt in einem Ausdruck.
In Zeile:17 Zeichen:36
+ >>     if ( $folders.Count -ne 0 ) {
+                                    ~
Die schließende "}" fehlt im Anweisungsblock oder der Typdefinition.
In Zeile:11 Zeichen:53
+ >> if ( Test-Path -Path $Ziel -PathType Container ) {
+                                                     ~
Die schließende "}" fehlt im Anweisungsblock oder der Typdefinition.
In Zeile:18 Zeichen:42
+ >>         foreach ( $ordner in $folders ) {
+                                          ~
Unerwartetes Token ")" in Ausdruck oder Anweisung.
In Zeile:46 Zeichen:8
+ >>     } else { Write-Host "Keine Ordner in $Quelle gefunden." }
+        ~
Unerwartetes Token "}" in Ausdruck oder Anweisung.
In Zeile:47 Zeichen:4
+ >> } else { Write-Host "Zielverzeichnis $Ziel existiert nicht!" }
+    ~
Unerwartetes Token "}" in Ausdruck oder Anweisung.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken


PS C:\Users\ICH>

Irgendwelche Ideen was ich machen kann damit das funktioniert?

Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 22, 2020, 13:33:23
Ich habe jetzt nochmal das Original von Seite drei in das normale Power Shell eingefügt, funktioniert leider auch nicht richtig.
Es werden jetzt die Dateien in der falschen Reihenfolge zusammengefügt, woran liegt das?
Ich versteh überhaupt nix mehr.

Ursprung ist N Ziel ist L. Kann das das Problem sein?
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 22, 2020, 13:42:51
Wenn ich es als .ps1 Datei speichere startet es zwar, fügt die Dateien aber auch in der falschen Reihenfolge zusammen. Woran liegt das?
Beim ersten Mal hat es doch auch funktioniert.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 23, 2020, 12:23:27
Die geposteten Fehlermeldungen sind doch mehr oder weniger dieselben, die Du bereits schon mal hochgeladen hast, und wo Dir geraten wurde, das Script eben NICHT direkt auf die auszufuehrende Kommandozeile zu pasten.

In der PoSh ISE musst Du das Script in dem WEISSEN Bereich oben ablegen (ggfs.ueber Datei-> Neu einen zur Anzeige bringen), und NICHT auf den blauen Bereich unten...

Die Reihenfolge der Quelldateien in der Zieldatei entspricht der Sortierreihenfolge der Dateinamen in der Eingabeaufforderung. Auf NTFS funktioniert das allermeistens, weil das Dateisystem von sich aus sortiert (wenn auch nicht unbedingt immer so wie man selber es will). Der copy-Befehl prueft den Inhalt der Dateien NICHT, sorgt also NICHT dafuer, dass die logische Reihenfolge ggfs. korrigiert wird. Das macht halt der TS-Doctor (allermeistens sehr gut, aber...).

Fuer eine (besser) passende Reihenfolge ggfs. auch auf anderen Dateisystemen wie FAT(32) musst Du also selber sorgen, z.B. dadurch, dass Du die Dateinamen alphabetisch aufsteigend vorgibst, und systemweit (d.h. auf allen Dateisystemen) Deinem Windows beibringst, auch selber alphabetisch zu sortieren. Dies geht recht einfach per Umgebungsvariable in den Erweiterten Systemeigenschaften (Variable: dircmd, Wert: /OGNE; ob Du Benutzervariablen oder Systemvariablen waehlst, bleibt Dir ueberlassen). Hemdsaermeliger kannst Du auch eine Zeile im Script aendern, und ein "set dircmd=/OGN & " einfuegen:
Start-Process -FilePath "$env:comspec" -ArgumentList "/c","set dircmd=/OGN & copy","/b",$files,$target -Wait
Das sollte als Notbehelf auch funktionieren; probiere es aber besser aus, bevor Du irgendwelche Quelldateien loeschst.

Zur dem was Wiederherstellungsprogramme koennen (und manchmal eben nicht) habe ich mich bereits eingelassen. Das Unlesbarmachen alter Dateien hat jedenfalls nichts mit mehrfachem Ueberschreiben zu tun (bzw. nicht alleine); da sind die Zusammenhaenge doch ein wenig komplizierter. Aber das wuerde hier jetzt ganz sicher zu weit fuehren.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 23, 2020, 17:23:18
Habs geändert. Hat leider nicht funktioniert.
Du meinst es liegt an der FAT32 Formatierung der HDD.
Die HDD bei der es funktioniert hat ist aber auch in FAT32 formatiert.
Habe gerade nochmal getestet und es funktioniert auf dieser auch immernoch korrekt.
Also muss ich irgendwie die erweiterten Systemeigenschaften ändern.
Mal sehen ob ich das hinkriege.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 23, 2020, 17:30:47
Hab die Variable eingetragen.
Ändert auch nichts.
Liegts vielleicht daran, dass die HDD über USB angeschlossen ist und die bei der es funktioniert intern?
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 23, 2020, 18:02:41
Nein, daran liegt es ganz sicher nicht. Und auch der Hinweis auf FAT32 wurde als MOEGLICHE, BEISPIELHAFTE Ursache genannt.

Vergleiche doch mal die Namen der Eingabedateien, einmal von da, wo es funktioniert hat, und einmal da wo eben nicht.

Oder zeige sie uns einfach. Ist ja nicht so, dass nicht vor zig Beitraegen schon einmal danach gefragt worden waere ;-)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 23, 2020, 18:45:27
Echt. Habe ich wohl übersehen.
Im Anhang mal zwei Bilder.
Gatsby ist von der HDD die funktioniert und Sherlock von der in der die Reihenfolge falsch ist.
Ich habe diese beiden genommen, da das Skript immer mit ihnen beginnt.

Die Ordner liegen direkt auf der höchsten Ebene auf beiden HDDs.

Ich kann da keine Unterschiede erkennen.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 23, 2020, 19:38:38
Dann schau Dir mal die Antworten #26 und #35 an...  :D

Aber ist ja jetzt egal; jetzt haben wir ja Beispiele.
Leider sehe ich aber auch keine das Verhalten erklaerende Unterschiede.
Ist es denn so, dass auf der Gatsby-Platte ALLE Zusammenfuegungen korrekt durchliefen, und auf der Sherlock-Platte ALLE (bisher probierten) falsch waren?

Wurden auf einer der beiden Platten irgendwelche Dateiumbenennungen vorgenommen? Wenn ja, welche?

Ach ja:
Kannst Du bitte auf der Eingabeaufforderung in beiden Verzeichnissen mal "dir /-o /x" ausfuehren, und die Ausgaben hier posten?
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 23, 2020, 20:50:41
So weit ich das überblicke ist nur eine Zusammenfügung fehlgeschlagen. Das waren aber auch Dateien die split 001.ts und split 002.ts am Ende hießen.
Die Daten siehe Dokument im Anhang.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 23, 2020, 20:52:01
Auf der anderen haben alle Zusammenfügungen die ich versucht habe in der falschen Reihenfolge stattgefunden.
Siehe Anhang
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 23, 2020, 20:56:36
Bezüglich Dateiumbenennungen kann ich nicht mehr genau sagen.
Ich glaube ich habe alle mal durch ein Programm umbenennen lassen womit das Datum, Sendername, Uhrzeit  etc. im Dateinamen entfernt wurde.
Das ist aber vermutlich auf beiden Platten gelaufen.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 23, 2020, 21:10:49
Habe folgenden Tipp bekommen:

"Alle Dateien aus dem Verzeichnis in einer TXT, die TXT in Excel importieren und mit deinem Copy Befehl verknüpfen, schon kannst Du kopieren und zusammenfügen. ;)"

Wie das genau gehen soll ist mir aber nicht klar. Also das Verknüpfen der Excel Liste mit dem Copy Befehl.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 23, 2020, 22:32:19
Gemeint war selbstverstaendlich der Inhalt der beiden Verzeichnisse vom Gatsby und Sherlock.

Sorry, aber mit dem genannten "Tipp" in der letzten Antwort bin ich mir jetzt nicht mehr ganz sicher, ob
a) der Tippgeber Dich
oder
b) Du uns/mich
verar...en will(st).

Im Falle a) kannst Du dort ja mal nach einer kompletten Handlungsanweisung fuer Deine Problemstellung fragen. (Selbstverstaendlich koennte man das Ganze auch ueber Excel bzw. VBA realisieren, aber damit machten wir hier weitere Baustellen auf, die [nochmals sorry] Deinen derzeitigen Programmierhorizont nach den bisherigen Eindruecken um Lichtjahre uebersteigen. Und wir naehern uns der zugrundeliegenden Problemstellung, der Erkennung der logischen Reihenfolge der Fragmente, damit auch nicht weiter an.)
Im Falle b)...

Schliessen wir das Thema an dieser Stelle doch vielleicht einfach ab mit:
Nimm' den TS-Doctor einzeln zur Verarbeitung der einzelnen Ordner, auch wenn's muehsam ist.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 23, 2020, 23:35:46
Ich will hier niemanden verarschen, sondern habe nur einen Tip aus einem Forum gepostet.
Wie viel Ahnung die dort haben kann ich aufgrund meiner Unkenntnis der Materie nicht sagen.
Nachdem ich dort auch mehr oder weniger blöde Bemerkungen zu meiner Frage bekommen habe würde ich mal davon ausgehen, dass man mich vera..... wollte.

Hier der Inhalt von Gatsby:
I:\Der große Gatsby>dir /-o /x
Datenträger in Laufwerk I: ist 1
Volumeseriennummer: 6509-D18E

Verzeichnis von I:\Der große Gatsby

20.06.2018  18:54    <DIR>                       .
20.06.2018  18:54    <DIR>                       ..
01.04.2014  04:02                 7 CELLTI~1.TXT CellTimes.txt
01.04.2014  04:02         5.277.493 DERGRO~1.DES Der große Gatsby.DESC
01.04.2014  04:20           196.608 DERGRO~1.MKS Der große Gatsby.MKS
01.04.2014  04:20             4.997 DERGRO~1.REC Der große Gatsby.REC
01.04.2014  04:02     4.286.930.252 DERGRO~1.TS  Der große Gatsby.TS
01.04.2014  04:11     4.286.972.352 DERGRO~2.TS  Der große Gatsby1.TS
01.04.2014  04:19       867.380.952 DERGRO~3.TS  Der große Gatsby2.TS
               7 Datei(en),  9.446.762.661 Bytes
               2 Verzeichnis(se), 107.223.744.512 Bytes frei

I:\Der große Gatsby>
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 23, 2020, 23:38:34
Und Sherlock

N:\Sherlock Holmes_ Spiel im Schatten>dir /-o /x
Datenträger in Laufwerk N: ist 8
Volumeseriennummer: 3284-E8C7

Verzeichnis von N:\Sherlock Holmes_ Spiel im Schatten

30.06.2013  10:35    <DIR>                       .
30.06.2013  10:35    <DIR>                       ..
08.02.2013  14:51                27 CELLTI~1.TXT CellTimes.txt
08.02.2013  14:59     2.122.527.497 SHERLO~1.TS  Sherlock Holmes_ Spiel im Schatten1.TS
08.02.2013  14:51     4.286.929.184 SHERLO~2.TS  Sherlock Holmes_ Spiel im Schatten.TS
08.02.2013  15:03             3.574 SHERLO~1.REC Sherlock Holmes_ Spiel im Schatten.REC
08.02.2013  15:03           196.608 SHERLO~1.MKS Sherlock Holmes_ Spiel im Schatten.MKS
08.02.2013  14:51         3.603.464 SHERLO~1.DES Sherlock Holmes_ Spiel im Schatten.DESC
               6 Datei(en),  6.413.260.354 Bytes
               2 Verzeichnis(se), 35.268.067.328 Bytes frei

N:\Sherlock Holmes_ Spiel im Schatten>
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 23, 2020, 23:41:55
Ich würde es nur ungern beenden, da ich schon sehr viel Zeit investiert habe und mich die Ursache der unterschiedlichen Bearbeitung echt interessieren würde.
Aber das liegt natürlich an Dir.
Bin Dir auf jeden Fall sehr dankbar für die bisher geleistete Unterstützung.
Wahrscheinlich bringt Dich meine Blödheit ständig zur Weißglut.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 23, 2020, 23:59:12
Unkenntnis hat nichts mit Bloedheit zu tun. Niemand wird allwissend auf diese Welt losgelassen. Wie Mam im Verlauf dieses Threads sinngemaess mal andeutete: Schlimm ist es nur, wenn jemand nicht bereit ist zum Lernen. Was zumindest nach meinem Eindruck bei Dir NICHT der Fall ist. Und "Weissglut" wuerde ich es nicht nennen, das mich befaellt, wenn meine Scripte nicht das tun was sie eigentlich sollen  :o.

Immerhin sieht man an diesen beiden Beispielen den Grund der Probleme, wenn man genau hinschaut:
Beim Gatsby sind die drei .TS-Teile korrekt in der 8.3-Kurznamen-Notation (die mit der Tilde ~ drin) numeriert; beim Sherlock ist es genau andersrum.

Damit koenntest Du zuerst einmal alle Verzeichnisse bearbeiten, wo die Benamsung korrekt erscheint.
Fuer die Verzeichnisse, wo es nicht stimmt, kannst Du vielleicht einfach ein neues Verzeichnis aehnlichen Namens erstellen, und die Dateien in der richtigen Reihenfolge hineinbewegen (move statt copy). Dadurch sollten die Kurznamen korrekt eingestellt werden.
Oder Du benennst die relevanten Dateien im Quellordner so um, dass die Reihenfolge stimmt, z.B.
Sherlock Holmes_ Spiel im Schatten.TS -> 0Sherlock Holmes_ Spiel im Schatten.TS
Sherlock Holmes_ Spiel im Schatten1.TS -> 1Sherlock Holmes_ Spiel im Schatten1.TS

Wenn alles kopiert wurde, brauchst Du die Quelldateien vermutlich ja sowieso nicht mehr.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 24, 2020, 00:32:17
Und was mir gerade noch einfaellt:
Spaetestens bei den Verzeichnissen/Dateien mit "plus" und "und" (&) sowie aehnlichen Absonderlichzeichen koennte es u.U. zu den von Dir beschriebenen Problem mit Ueberschreibern usw. kommen, weil diese Sonderzeichen vom Kommandointerpreter selbst interpretiert werden koennten, und die Zieldatei dann nicht wie gewuenscht (und geprueft) verwendet wird. Das sollen sie eigentlich nicht (wegen der Anfuehrungszeichen), aber naja...

So was korrigierst Du also besser vorher. Sonst muss man es im Script (z.B. mit $target=$target.Replace("+","") versuchen.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Mai 24, 2020, 11:29:13
vielleicht wäre es sinnvoll, auf diese antiquierten Dateinamen zu verzichten?

Der Befehl

fsutil 8dot3name strip /s /t <LAUFWERKSBUCHSTABE:>

löscht alle 8.3 Namen und somit sollte das Sortierungsproblem verschwinden.

(Achtung! mit "/t" ist es nur ein TESTLAUF, es wird nur angezeigt, was gemacht werden WÜRDE. Lässt man "/t" weg, so passiert es wirklich, die Änderungen sind dann nicht mehr reversibel!!! Also erstmal vorsichtig ausprobieren und das Ergebnis analysieren. Oder nur auf ein Backup der Platten anwenden)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 24, 2020, 11:37:38
Das geht aber leider nur auf NTFS-Volumes  :D
Der entsprechende Registryeintrag lautet komplett "NtfsDisable8dot3NameCreation". Und wessen Windows nach Anwendung auf Laufwerk C: nicht mehr richtig funktioniert, weiss was er oder sie falsch gemacht hat.

Aber die Loesung ist eigentlich ganz einfach:
Statt DOS die Suchmaske zu uebergeben und *falsch* sortieren zu lassen, kann man auch PoSh sortieren lassen, und in $files einen zusammengesetzten String mit den *richtigen* Dateiennamen und entsprechenden Pluszeichen uebergeben.

Habe ich noch nicht ganz fertig, und jetzt erst einmal was anderes zu tun. Sorry...
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 24, 2020, 12:02:51
Sehr gut. Dann ist auch für mich nachvollziehbar die Ursache des Problems gefunden.
Ich versuche jetzt erst Mal die HDD von FAT32 in NTFS umwandeln zu lassen um den Befehl von MAM zu testen.

Falls das nicht hinhaut muss ich wohl umbennenen.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 24, 2020, 13:53:40
Habe mal auf einer fast leeren NTFS HDD den Befehl von MAM über den kopierten Sherlock Ordner laufen lassen.
Obwohl ich nur den Test habe laufen lassen und auch keine 8dot3name gefunden wurden hat das Skript die Dateien danach in der richtigen Reihenfolge zusammengefügt.

Umwandlung hat nicht funktioniert wegen zu wenig Speicherplatz. Da muss ich erst noch umschichten.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 24, 2020, 15:14:55
Ersetze im Script die Zeile if ( $files.IndexOf(" ") -ne -1 ) { $files = "`"" + $files + "`"" }durch$dateien = Get-ChildItem -File -Path $files | Sort-Object -Property Name
$files = " `""+$dateien[0].Name+"`""
for ( $i = 1 ; $i -lt $dateien.Count ; $i++ ) { $files += " + `""+($dateien[$i].Name)+"`" " }

Das sollte das Problem ebenfalls beheben, auch ohne das Dateisystem zu aendern.

Damit sollten weiterhin die Probleme mit Sonderzeichen in den Ordner- und Dateinamen behoben sein.

PS:
Eine Fehlerbehandlung fuer leere Ordner (d.h. ohne Treffer fuer das angegebene Suchmuster) ist hier noch nicht enthalten.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 24, 2020, 16:20:58
Ich habe mal einen Test gefahren.
Mein geänderter Code siehe Anhang.
In PSISE oben eingefügt und auf Start gedrückt.
Das Skript hat schnell alle Ordner eingelesen aber nichts zusammengefügt.
Sah so aus als ob jeweils für Millisekunden ein cmd Fenster aufgegangen wäre.
Hier das Ergebnis:
N:\Test\Cowboys & Aliens
N:\Test\Banks - Der Solist
N:\Test\Battleship
N:\Test\Begegnung im All 3D
N:\Test\Begegnungen am Ende der Welt
N:\Test\Berlin - Geheimoperation Tunnel
N:\Test\Big
N:\Test\Bis dass der Tod uns scheidet 2
N:\Test\Blitz - Cop-Killer vs. Killer-Cop
N:\Test\Body Count - Flucht nach Miami
N:\Test\Boiling Point - Die Bombe tickt
N:\Test\Bond Girls are forever
N:\Test\Born to Raise Hell
N:\Test\Bullen - wie lange wollt ihr leben_
N:\Test\Bullitt
N:\Test\Call Me Iggy
N:\Test\ChinAmerika
N:\Test\Churchill - Blut, Schweiß und Tränen
N:\Test\Churchill - Sieg und Niederlage
N:\Test\Churchill - The Gathering Storm - Ein Sturm zieht auf
N:\Test\Churchills geheimes Waffenlabor
N:\Test\Churchills größtes Spiel
N:\Test\City Heat - Der Bulle und der Schnüffler
N:\Test\Cop Land
N:\Test\Countdown bis zum Tod

PS C:\Users\ICH>
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 24, 2020, 16:37:17
Änderung des Dateisystems funktioniert leider nicht.
Kriege immer irgendwelche Fehlermeldungen.
Lasse ich lieber bevor ich wieder einen riesigen Datenverlust produziere.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Mai 24, 2020, 16:44:45
Zitat von: LED ZEPPELIN am Mai 24, 2020, 16:37:17
Änderung des Dateisystems funktioniert leider nicht.
Kriege immer irgendwelche Fehlermeldungen.
Lasse ich lieber bevor ich wieder einen riesigen Datenverlust produziere.
;D Weise Entscheidung  ;D
Gräme Dich aber nicht, man kann das Dateisystem nicht mehr ohne Datenverlust ändern. Das ging irgendwann in grauer Vorzeit mal, seit Jahrzehnten ist aber NTFS Standard, da hat Microsoft irgendwann mal gesagt, den Aufwand für die Konvertierung können wir uns sparen und den Teil seitdem weggelassen.

Ich versteh aber auch nicht, wieso jemand auf externen Festplatten noch das antiquierte FAT32 benutzt mit allen seinen Fehlern und Einschränkungen...
Bei Speicherkarten mit maximal 8Gb kann ich es noch verstehen, aber, wenns dann größer wird, ist FAT einfach nur noch Platzverschwendung
(Erklärung: die Anzahl der möglichen Verwaltungseinheiten ist bei FAT beschränkt. Wenn Platten größer werden, wird deshalb immer weiter die Größe dieser Einheiten angepasst. Das führt dann dazu, dass kleine Dateien einen Riesenplatz belegen. Eine Datei mit "JA!" ist dann nicht mehr 4k (normale Verwaltungseinheit), sondern 1Gb groß !!!)

Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Mai 24, 2020, 16:47:03
Siehst Du, ich sagte doch: Niemand ist vollkommen.

In meinem neuen Codeschnipsel muessen alle ".Name" selbstverstaendlich ".FullName" heissen.

Sonst stehen in der Variablen $files nur die Dateinamen ohne Pfadangabe.

Und wenn Du schon dabei bist, aendere die Targetzeile zu             # bei Leerzeichen Anfuehrungszeichen hinzu
            $target = "`"" + $target + "`""


@Mam:
Uralte Receiver ohne Firmware-Updates sind beliebte Quellen dieser antiquierten Dateisysteme ;-)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 24, 2020, 16:49:00
Nur leider mussten die HDDs für den Datenübertrag meines alten Technisat HD S2+ in Fat32 formatiert sein. Daher stammt das Zeug noch.

FAT32 in NTFS geht schon noch über cmd. Habe ich schon mehrfach durchgeführt.
Bin aber auch schon manchmal wegen irgendwelcher Fehler gescheitert.

Ist immer etwas Gläcksache habe ich so das Gefühl. (Jaja, das hat alles Ursachen. Mir schon klar.)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 24, 2020, 19:30:34
Lasse gerade mal ein paar Testreihen durchlaufen.
Scheint zu funktionieren.
Ich schaue mir nach dem Ende mal ein paar Filme durch ob sie auch wirklich richtig durchlaufen.
Aber da bin ich doch recht zuversichtlich.

Vielen vielen Dank.

Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Mai 24, 2020, 21:50:21
Konnte natürlich nur Stichproben machen, aber die waren erfolgreich.
Das Skript funktioniert offensichtlich.

Vielen Dank nochmal.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 13, 2020, 15:38:34
Hallo Leute,

nachdem bisher alles gut lief taucht seit heute wieder ein Problem auf.
Folgender Fehler tritt auf:
Es ist nicht möglich, einen Index auf ein NULL-Array anzuwenden.
In Zeile:34 Zeichen:1
+ $files = " `""+$dateien[0].FullName+"`""
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : NullArray

In den Ordnern befinden sich ganz normale ts Dateien. Manchmal zwei, manchmal eine.
Das ging bei den anderen HDDS bisher problemlos.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 13, 2020, 16:54:49
Vielleicht zeigst Du uns doch noch ein paar Zeilen mehr VOR und ggfs. NACH der Meldung...
Da muesste doch, glaube ich, eine Kontrollausgabe des gerade bearbeiteten Verzeichnisses dabeisein.

Ich moechte fast wetten, dass es irgendein LEERES Verzeichnis (oder zumindest ohne .ts-Dateien) auf der Quelle gibt...
$dateien ist ja das Array der gefundenen Dateiobjekte, und wenn das leer ist, dann wurden keine dem Muster entsprechenden Dateien gefunden...

Sonst muss ich den Thread noch einmal durchwuehlen nach dem letzten Stand des von Dir verwendeten Skriptes :-)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 13, 2020, 17:17:01
Vielleicht reicht's auch schon, wenn Du als neue Zeile 40 (also UNTER die auskommentierte Zeile "Read-Host...") einfuegst:
} else { Write-Host "Keine .ts-Dateien in " + $ordner.Fullname + " gefunden." }
und DANACH als neue Zeile 34
if ( $dateien.Count -ne 0 ) {
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 13, 2020, 17:19:35
In den Ordnern sind definitiv ts Dateien.
Siehe Anhang.
Dort findest Du auch das aktuelle Skript das ich verwende und eine größere Liste der Fehlermeldungen.

Leere Ordner oder welche ohne ts Dateien waren bisher waren bisher nicht das Problem, dann kommt zwar auch die Fehlermeldung, aber alle Ordner mit ts Dateien im selben Verzeichnis wurden trotzdem korrekt bearbeitet.

Ich kann da echt keinerlei Muster erkennen wenn ich mir die Ordner ansehe.
An den Umlauten liegt es nicht. An der Anzahl der ts Dateien auch nicht .
Keine Ahnung was da los ist.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 13, 2020, 17:28:02
Soll das so aussehen
#                Read-Host -Prompt "Enter..."
} else { Write-Host "Keine .ts-Dateien in " + $ordner.Fullname + " gefunden." }
            }
        }
    } else { Write-Host "Keine Ordner in $Quelle gefunden." }
} else { Write-Host "Zielverzeichnis $Ziel existiert nicht!" }

Funktioniert leider nicht.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 13, 2020, 17:38:18
Mit der neuen Zeile 34 funktioniert es auch nicht.
Wobei ich nicht ausschliessen möchte, dass ich was falsch eingebe im Skript.

Kriege folgende Meldung:
Die schließende "}" fehlt im Anweisungsblock oder der Typdefinition.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MissingEndCurlyBrace
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 13, 2020, 17:40:29
Hm, so auf den ersten Blick sind das immer die Verzeichnisse, in denen sich nur eine einzige Datei befindet.
Bis auf "1 Mord für 2"...

Und sonst:
Für den zweiten Teil ist das Gepostete richtig. Aber ich hoffe, Du hast auch den ersten Teil (den mit "if ( $dateien...") eingefuegt.
Aber weil ja tatsaechlich zumindest die Verzeichnisausgabe .TS anzeigt, wird der Schnellschuss vmtl. nicht helfen.

Zeig' doch mal wieder ein "dir /ogn /x" von den Verzeichnissen
T:\... und morgen fahrt ihr zur Hoelle
T:\1 Mord für 2
T:\8 Blickwinkel
T:\Airborne - Fluegel aus Stahl


PS:
Warum schreibst Du auf einmal "Hoelle" und "Fluegel"? ;D

PS2: (wegen neuem Post)
Poste doch noch einmal das komplette neue Skript.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 13, 2020, 18:24:04
Das Skript sieht so aus.

# 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
            $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
                $dateien = Get-ChildItem -File -Path $files | Sort-Object -Property Name
                if ( $dateien.Count -ne 0 ) {
for ( $i = 1 ; $i -lt $dateien.Count ; $i++ ) { $files += " + `""+($dateien[$i].FullName)+"`" " }
                # 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 .ts-Dateien in " + $ordner.Fullname + " gefunden." }
            }
        }
    } else { Write-Host "Keine Ordner in $Quelle gefunden." }
} else { Write-Host "Zielverzeichnis $Ziel existiert nicht!" }

Funktioniert aber auch nur teilweise.
Dateien werden für Millisekunden geöffnet und dann ist Ende.

Bis auf Arbitrage keiner zusammengefügt:

T:\... und morgen fahrt ihr zur Hoelle
Keine .ts-Dateien in  + T:\... und morgen fahrt ihr zur Hoelle +  gefunden.
T:\1 Mord für 2
Keine .ts-Dateien in  + T:\1 Mord für 2 +  gefunden.
T:\100 Songs, die die Welt bewegten 1
T:\100 Songs, die die Welt bewegten 2
T:\12 Uhr mittags
T:\2 Guns
T:\5 Days of War
T:\8 Blickwinkel
Keine .ts-Dateien in  + T:\8 Blickwinkel +  gefunden.
T:\96 Hours - Taken 2 (Extended Cut)
T:\Abenteuer Sibirien
T:\Air Force One is Down 1+2
T:\Airborne - Bete, daß sie nicht landen
Keine .ts-Dateien in  + T:\Airborne - Bete, daß sie nicht landen +  gefunden.
T:\Airborne - Fluegel aus Stahl
Keine .ts-Dateien in  + T:\Airborne - Fluegel aus Stahl +  gefunden.
T:\Akte D (1-3)
T:\Akte D (2-3)
T:\Alarm im Pazifik
Keine .ts-Dateien in  + T:\Alarm im Pazifik +  gefunden.
T:\Alarmstufe_ Rot 2
Keine .ts-Dateien in  + T:\Alarmstufe_ Rot 2 +  gefunden.
T:\Alexander der Große
T:\Als die Welt in Flammen stand 1
Keine .ts-Dateien in  + T:\Als die Welt in Flammen stand 1 +  gefunden.
T:\Als die Welt in Flammen stand 2
Keine .ts-Dateien in  + T:\Als die Welt in Flammen stand 2 +  gefunden.
T:\Als die Welt in Flammen stand 3
Keine .ts-Dateien in  + T:\Als die Welt in Flammen stand 3 +  gefunden.
T:\Als die Welt in Flammen stand 4
Keine .ts-Dateien in  + T:\Als die Welt in Flammen stand 4 +  gefunden.
T:\Amerika und seine Kriege - Die Feldzü
Keine .ts-Dateien in  + T:\Amerika und seine Kriege - Die Feldzü +  gefunden.
T:\Amerikas geheimer Krieg in Laos
T:\Arabeske
Keine .ts-Dateien in  + T:\Arabeske +  gefunden.
T:\Arbitrage
T:\Archie und Harry - Sie können's nicht
T:\Ardennen 1944 (Attack)
Keine .ts-Dateien in  + T:\Ardennen 1944 (Attack) +  gefunden.
T:\Art of War
T:\Assault on Wall Street
T:\Auf Leben und Tod 90. Scholl-Latour
T:\Aufstand im Morgengrauen
Keine .ts-Dateien in  + T:\Aufstand im Morgengrauen +  gefunden.
T:\Auftrag Mord
Keine .ts-Dateien in  + T:\Auftrag Mord +  gefunden.
T:\Back in Black - Die Renaissance der S
Keine .ts-Dateien in  + T:\Back in Black - Die Renaissance der S +  gefunden.
T:\Back in Black - Die Renaissance der Schallplatte
T:\Back in the Game
T:\Bad 25
T:\Bad Country
Keine .ts-Dateien in  + T:\Bad Country +  gefunden.
T:\Bean - Der ultimative Katastrophenfil
T:\Bee Gees_ Brüder im Discofieber
T:\Berlin 1945 - Ueberleben im Bunker

Im Anhang die Übersicht.

"Hoelle" weil ich die Probleme mit Umlauten vermeiden wollte.


Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 13, 2020, 20:03:27
OK, die Pluszeichen in der Ausgabe-Zeile "Keine ts.-Dateien..." sind ueberfluessig; die koennen wech.

Ansonsten meint das Skript, dass eben keine gesuchten Dateien in den Verzeichnissen zu finden seien. Das ist merkwuerdig, weil Dein Unterverzeichnislisting solche Dateien ja anzeigte.

Deswegen richtete sich meine Frage mit dem "dir /x" auch nicht auf das Wurzelverzeichnis von T:\, sondern auf den Inhalt der genannten Verzeichnisse, denn da liegen die nicht gefundenen Dateien ja offenbar drin.

Kannst Du die noch liefern, bitte?

"12 Uhr mittags" wurde NICHT zusammengefuegt?

Und: Umlaute sind nur EIN moegliches Problem. Die ganzen Sonderzeichen inkl. Leerzeichen machen die Sache grundsaetzlich nicht leichter  :)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 13, 2020, 20:51:28
Ach ja, und dann noch:
Ich hoffe, dass das abgebildete Skript NICHT dem entspricht, was Du bei Dir vorliegen hast, dann da fehlt der Anfang.

Aber was noch schlimmer ist:
Du hast die "neue Zeile 34" nicht EINGEFUEGT wie beschrieben, sondern die vorhandene Zeile 34 ERSETZT. Das war nicht, um was ich Dich gebeten hatte, denn so fehlt eigentlich immer der erste Teil beim Zusammenfuegen.

Mal abgesehen davon, dass ausser der Übertragung auf das Ziellaufwerk und evtl. einer Umbenennung bei 1-teiligen Dateien das Skript ueberhaupt nicht benoetigt wuerde...
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 13, 2020, 21:00:48
 Hier mal eines der Verzeichnise von

T:\12 Uhr mittags

18.06.2018  16:09    <DIR>                       .
18.06.2018  16:09    <DIR>                       ..
05.02.2014  20:41     4.286.940.371 12UHRM~1.TS  12 Uhr mittags.TS
05.02.2014  20:50     3.990.656.757 12UHRM~2.TS  12 Uhr mittags1.TS
05.02.2014  20:41         4.630.128 ZWLFUH~1.DES Zwölf Uhr mittags.DESC
05.02.2014  20:57           196.608 ZWLFUH~1.MKS Zwölf Uhr mittags.MKS
05.02.2014  20:57             4.836 ZWLFUH~1.REC Zwölf Uhr mittags.REC
               5 Datei(en),  8.282.428.700 Bytes
               2 Verzeichnis(se), 13.209.103.360 Bytes frei

Weitere folgen
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 13, 2020, 21:02:28
Doch, das ist alles was ich habe als Skript.
Ich hatte es mit einfügen versucht, das ging gar nicht. Dann habe ich die Zeile ersetzt und es lief wenigstens etwas.
Aber ich ändere das jetzt und poste das Ergebnis.

Was fehlt da am Anfang?
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 13, 2020, 21:06:54
 Verzeichnis von T:\... und morgen fahrt ihr zur Hoelle

18.06.2018  13:50    <DIR>                       .
18.06.2018  13:50    <DIR>                       ..
08.08.2009  17:36     3.124.650.616 UNDMOR~1.TS  ... und morgen fahrt ihr zur Hoelle.TS
               1 Datei(en),  3.124.650.616 Bytes
               2 Verzeichnis(se), 13.209.103.360 Bytes frei

Bisher waren Ordner mit nur einer Datei auch kein Problem.
Die Datei wurde einfach auf die neue HDD geschrieben.
Was mir die Arbeit natürlich massiv erleichtert.

Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 13, 2020, 21:13:56
Na, die Quell- und Zielordnerfestlegung...

Das Skript sollte jetzt so aussehen:
# Quellverzeichnis mit Ordnern
$Quelle = "N:\Test\"

# Zielverzeichnis der .ts Ausgabedatei(en)
$Ziel = "S:\"

# 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
            $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
                $dateien = Get-ChildItem -File -Path $files | Sort-Object -Property Name
                if ( $dateien.Count -ne 0 ) {
                    $files = " `""+$dateien[0].FullName+"`""
                    for ( $i = 1 ; $i -lt $dateien.Count ; $i++ ) { $files += " + `""+($dateien[$i].FullName)+"`" " }
                    # 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 .ts-Dateien in " $ordner " gefunden." }
            }
        }
    } else { Write-Host "Keine Ordner in $Quelle gefunden." }
} else { Write-Host "Zielverzeichnis $Ziel existiert nicht!" }


Zumindest funktioniert es so bei mir mit einem Ordner "1 Mord für 2" mit einer einzelnen (allerdings leeren) Datei "1 Mord für 2.TS" drin (und einer Anpassung von Quelle und Ziel).

Das Verzeichnis mit den Punkten am Anfang ist vmtl. ein ganz anderes Problem. Wie Du bei den Listings siehst, gibt es da auch immer zwei Verzeichnisse "." und ".." in jedem Unterverzeichnis, die eine besondere Bedeutung haben. Vielleicht entfernst Du die Punkte einfach aus dem Ordner- und den Dateinamen...
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 13, 2020, 21:14:21
So sieht es jetzt komplett aus:
# Quellverzeichnis mit Ordnern
$Quelle = "I:"

# Zielverzeichnis der .ts Ausgabedatei(en)
$Ziel = "N:\"

# 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
            $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
                $dateien = Get-ChildItem -File -Path $files | Sort-Object -Property Name
if ( $dateien.Count -ne 0 ) {
$files = " `""+$dateien[0].FullName+"`""
for ( $i = 1 ; $i -lt $dateien.Count ; $i++ ) { $files += " + `""+($dateien[$i].FullName)+"`" " }
                # 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 .ts-Dateien in " + $ordner.Fullname + " gefunden." }
            }
        }
    } else { Write-Host "Keine Ordner in $Quelle gefunden." }
} else { Write-Host "Zielverzeichnis $Ziel existiert nicht!" }

Die Fehler bleiben aber.
Manche Ordner mit nur einer Datei werden neu geschrieben, zb. T:\100 Songs, die die Welt bewegten 1 und 2

Deshalb hier das Verzeichnis:

Verzeichnis von T:\100 Songs, die die Welt bewegten 1

18.06.2018  16:25    <DIR>                       .
18.06.2018  16:25    <DIR>                       ..
03.12.2013  10:12         1.904.131 100SON~1.DES 100 Songs, die die Welt bewegten.DESC
03.12.2013  10:20           196.608 100SON~1.MKS 100 Songs, die die Welt bewegten.MKS
03.12.2013  10:20             3.261 100SON~1.REC 100 Songs, die die Welt bewegten.REC
03.12.2013  10:12     3.302.729.866 100SON~1.TS  100 Songs, die die Welt bewegten.TS
03.12.2013  10:12                24 CELLTI~1.TXT CellTimes.txt
               5 Datei(en),  3.304.833.890 Bytes
               2 Verzeichnis(se), 13.209.103.360 Bytes frei

12 Uhr mittags wurde jetzt zusammengefügt
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 13, 2020, 21:22:17
Sorry.

Die Quell und Zieldatei ändere ich natürlich immer in T und I
Ich versuch mal das neue von Dir.

PS C:\Users\ICH> # Quellverzeichnis mit Ordnern
$Quelle = "T:\"

# Zielverzeichnis der .ts Ausgabedatei(en)
$Ziel = "I:\"

# 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
            $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
                $dateien = Get-ChildItem -File -Path $files | Sort-Object -Property Name
                if ( $dateien.Count -ne 0 ) {
                    $files = " `""+$dateien[0].FullName+"`""
                    for ( $i = 1 ; $i -lt $dateien.Count ; $i++ ) { $files += " + `""+($dateien[$i].FullName)+"`" " }
                    # 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 .ts-Dateien in " $ordner " gefunden." }
            }
        }
    } else { Write-Host "Keine Ordner in $Quelle gefunden." }
} else { Write-Host "Zielverzeichnis $Ziel existiert nicht!" }
T:\1 Mord für 2
Keine .ts-Dateien in  1 Mord für 2  gefunden.
T:\100 Songs, die die Welt bewegten 1
T:\100 Songs, die die Welt bewegten 2

1 Mord für 2 funktioniert trotzdem nicht.

Verzeichnis von T:\1 Mord für 2

07.08.2010  13:51    <DIR>                       .
07.08.2010  13:51    <DIR>                       ..
07.08.2010  13:51           971.308 1MORDF~1.DES 1 Mord für 2.DESC
07.08.2010  13:54           196.608 1MORDF~1.MKS 1 Mord für 2.MKS
07.08.2010  13:54             2.729 1MORDF~1.REC 1 Mord für 2.REC
07.08.2010  13:51     1.656.908.517 1MORDF~1.TS  1 Mord für 2.TS
               4 Datei(en),  1.658.079.162 Bytes
               2 Verzeichnis(se), 13.209.103.360 Bytes frei

... und morgen habe ich die Punkte entfernt.
liegt jetzt natürlich weiter hinten und kommt erst später dran

Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 13, 2020, 21:26:13
Es sieht etwas danach aus, dass jetzt nur noch Ordner Probleme machen in denen nur noch die .ts Dateien existieren.
z.B.:
Verzeichnis von T:\8 Blickwinkel

18.06.2018  13:50    <DIR>                       .
18.06.2018  13:50    <DIR>                       ..
07.09.2009  22:24     2.547.982.424 8BLICK~1.TS  8 Blickwinkel.TS
               1 Datei(en),  2.547.982.424 Bytes
               2 Verzeichnis(se), 13.209.103.360 Bytes frei

Kann das sein?
Es wird doch nur danach gesucht. Versteh ich nicht.

Ich lass jetzt mal etwas laufen und prüfe ob der Verdacht sich bestätigt.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 13, 2020, 21:40:49
Das läßt sich bestätigen.
Wenn nur die .ts Dateien im Ordner sind werden sie nicht gefunden.

Mir fällt gerade noch auf dass die Dateien nicht auf .ts sondern auf .TS enden.
Spielt das eine Rolle?

Bei ts4 oder TS4 war das bisher nicht relevant denke ich.

Wenn sich
Dateiname.TS und
Dateiname1.TS
im Ordner befinden werden sie aber korrekt zusammengefügt.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 13, 2020, 22:26:03
Nein, gross/klein macht keinen Unterschied; da werden (i.A.) mit dem Muster "*.ts" alle Varianten gefunden.

Wie ich oben schrieb, habe ich das mit genau nur der einen einzelnen Datei im Verzeichnis und grossem .TS problemlos bei mir durchlaufen lassen.

Fuer den Moment habe ich keine Idee...

Probier' mal Get-ChildItem "T:\1 Mord für 2" | select -Property * direkt auf dem PowerShell-Prompt.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 13, 2020, 22:45:39
Was heißt:
direkt auf dem PowerShell-Prompt.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 13, 2020, 23:29:43
Da, wo Du frueher immer die kompletten Skripte hinkopiert hast.
Entweder in den unteren blauen Fensterteil der Powershell ISE, oder "Windows PowerShell" aus dem Startmenue.
Wo der Cursor blinkt hinter "PS C:\Users\ICH>". Das nennt man Prompt.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 13, 2020, 23:33:43
Wenn ich die Zusatzdateien aus einem anderen Ordner reinkopiere und die Datei in .ts umbenenne statt .TS funktioniert es.
Echt seltsam würde ich sagen.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 13, 2020, 23:35:20
Zitat von: tsduser am Juni 13, 2020, 23:29:43
Da, wo Du frueher immer die kompletten Skripte hinkopiert hast.
Entweder in den unteren blauen Fensterteil der Powershell ISE, oder "Windows PowerShell" aus dem Startmenue.
Wo der Cursor blinkt hinter "PS C:\Users\ICH>". Das nennt man Prompt.

Mach ich wenn es durchgelaufen ist. Wird noch dauern.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 13, 2020, 23:56:46
Hier das Ergebnis

PS C:\Users\ICH> Get-ChildItem "T:\1 Mord für 2" | select -Property *


PSPath            : Microsoft.PowerShell.Core\FileSystem::T:\1 Mord für 2\1 Mord für 2.DESC
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::T:\1 Mord für 2
PSChildName       : 1 Mord für 2.DESC
PSDrive           : T
PSProvider        : Microsoft.PowerShell.Core\FileSystem
PSIsContainer     : False
Mode              : -a----
VersionInfo       : File:             T:\1 Mord für 2\1 Mord für 2.DESC
                    InternalName:     
                    OriginalFilename:
                    FileVersion:     
                    FileDescription: 
                    Product:         
                    ProductVersion:   
                    Debug:            False
                    Patched:          False
                    PreRelease:       False
                    PrivateBuild:     False
                    SpecialBuild:     False
                    Language:         
                   
BaseName          : 1 Mord für 2
Target            : {}
LinkType          :
Name              : 1 Mord für 2.DESC
Length            : 971308
DirectoryName     : T:\1 Mord für 2
Directory         : T:\1 Mord für 2
IsReadOnly        : False
Exists            : True
FullName          : T:\1 Mord für 2\1 Mord für 2.DESC
Extension         : .DESC
CreationTime      : 07.08.2010 13:51:10
CreationTimeUtc   : 07.08.2010 11:51:10
LastAccessTime    : 07.08.2010 00:00:00
LastAccessTimeUtc : 06.08.2010 22:00:00
LastWriteTime     : 07.08.2010 13:51:10
LastWriteTimeUtc  : 07.08.2010 11:51:10
Attributes        : Archive

PSPath            : Microsoft.PowerShell.Core\FileSystem::T:\1 Mord für 2\1 Mord für 2.MKS
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::T:\1 Mord für 2
PSChildName       : 1 Mord für 2.MKS
PSDrive           : T
PSProvider        : Microsoft.PowerShell.Core\FileSystem
PSIsContainer     : False
Mode              : -a----
VersionInfo       : File:             T:\1 Mord für 2\1 Mord für 2.MKS
                    InternalName:     
                    OriginalFilename:
                    FileVersion:     
                    FileDescription: 
                    Product:         
                    ProductVersion:   
                    Debug:            False
                    Patched:          False
                    PreRelease:       False
                    PrivateBuild:     False
                    SpecialBuild:     False
                    Language:         
                   
BaseName          : 1 Mord für 2
Target            : {}
LinkType          :
Name              : 1 Mord für 2.MKS
Length            : 196608
DirectoryName     : T:\1 Mord für 2
Directory         : T:\1 Mord für 2
IsReadOnly        : False
Exists            : True
FullName          : T:\1 Mord für 2\1 Mord für 2.MKS
Extension         : .MKS
CreationTime      : 07.08.2010 13:54:38
CreationTimeUtc   : 07.08.2010 11:54:38
LastAccessTime    : 13.06.2020 21:09:03
LastAccessTimeUtc : 13.06.2020 19:09:03
LastWriteTime     : 07.08.2010 13:54:38
LastWriteTimeUtc  : 07.08.2010 11:54:38
Attributes        : Archive

PSPath            : Microsoft.PowerShell.Core\FileSystem::T:\1 Mord für 2\1 Mord für 2.REC
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::T:\1 Mord für 2
PSChildName       : 1 Mord für 2.REC
PSDrive           : T
PSProvider        : Microsoft.PowerShell.Core\FileSystem
PSIsContainer     : False
Mode              : -a----
VersionInfo       : File:             T:\1 Mord für 2\1 Mord für 2.REC
                    InternalName:     
                    OriginalFilename:
                    FileVersion:     
                    FileDescription: 
                    Product:         
                    ProductVersion:   
                    Debug:            False
                    Patched:          False
                    PreRelease:       False
                    PrivateBuild:     False
                    SpecialBuild:     False
                    Language:         
                   
BaseName          : 1 Mord für 2
Target            : {}
LinkType          :
Name              : 1 Mord für 2.REC
Length            : 2729
DirectoryName     : T:\1 Mord für 2
Directory         : T:\1 Mord für 2
IsReadOnly        : False
Exists            : True
FullName          : T:\1 Mord für 2\1 Mord für 2.REC
Extension         : .REC
CreationTime      : 07.08.2010 13:54:38
CreationTimeUtc   : 07.08.2010 11:54:38
LastAccessTime    : 07.08.2010 00:00:00
LastAccessTimeUtc : 06.08.2010 22:00:00
LastWriteTime     : 07.08.2010 13:54:38
LastWriteTimeUtc  : 07.08.2010 11:54:38
Attributes        : Archive

PSPath            : Microsoft.PowerShell.Core\FileSystem::T:\1 Mord für 2\1 Mord für 2.TS
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::T:\1 Mord für 2
PSChildName       : 1 Mord für 2.TS
PSDrive           : T
PSProvider        : Microsoft.PowerShell.Core\FileSystem
PSIsContainer     : False
Mode              : -a----
VersionInfo       : File:             T:\1 Mord für 2\1 Mord für 2.TS
                    InternalName:     
                    OriginalFilename:
                    FileVersion:     
                    FileDescription: 
                    Product:         
                    ProductVersion:   
                    Debug:            False
                    Patched:          False
                    PreRelease:       False
                    PrivateBuild:     False
                    SpecialBuild:     False
                    Language:         
                   
BaseName          : 1 Mord für 2
Target            : {}
LinkType          :
Name              : 1 Mord für 2.TS
Length            : 1656908517
DirectoryName     : T:\1 Mord für 2
Directory         : T:\1 Mord für 2
IsReadOnly        : False
Exists            : True
FullName          : T:\1 Mord für 2\1 Mord für 2.TS
Extension         : .TS
CreationTime      : 07.08.2010 13:51:12
CreationTimeUtc   : 07.08.2010 11:51:12
LastAccessTime    : 13.06.2020 21:09:02
LastAccessTimeUtc : 13.06.2020 19:09:02
LastWriteTime     : 07.08.2010 13:51:12
LastWriteTimeUtc  : 07.08.2010 11:51:12
Attributes        : Archive
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 14, 2020, 07:49:12
Tja, Microsoft...
Eigentlich sollte get-childitem nicht case-sensitive arbeiten, und bietet auch keine Parameter, um dieses Verhalten zu steuern.

Probier' es mal mit einer Suchmaske aus Grossbuchstaben, und pruefe, ob dann die mit kleinem .ts (z.B. "Back in Black...") ausgelassen werden:
            # Suchmaske fuer Dateien im Ordner
            $files = $ordner.FullName + "\*.TS"


PS:
Bei "Bill Clinton" waere ich auch auf das Ergebnis gespannt; denn da hat eine der beiden .ts ein Leerzeichen, und die andere nicht.

PS2:
Was fuer ein Dateisystem ist denn auf T: vorhanden? chkdsk t:
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 14, 2020, 13:17:32
Dateisystem NTFS.
Bill Clinton wurde ohne Probleme zusammengefügt.

Mit .TS funktioniert es. Habe ich gestern Nacht schon mal laufen lassen.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 14, 2020, 16:46:22
Die mit kleinen Buchstaben werden ausgelassen. Nur der Vollständigkeit halber.

Vielen Dank mal wieder für den Support.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 14, 2020, 18:45:27
Gern geschehen.

Dafuer gibt's auch diesen Code-Schnipsel, der (hoffentlich nicht nur bei mir, naja...) die Gross/Klein-Probleme beseitigen sollte (obwohl ich immer noch nicht verstehe, warum das bei Dir so auftritt):
            # Suchmaske fuer Dateien im Ordner
            $filesL = $ordner.FullName + "\*.ts"
            $filesU = $ordner.FullName + "\*.TS"

            # falls weder Zieldatei noch getestete Zieldatei vorhanden sind...
            if ( -not ( Test-Path -Path $target ) ) {
                $dateienL = Get-ChildItem -File -Path $filesL
                $dateienU = Get-ChildItem -File -Path $filesU
                $dateien = $dateienL + $dateienU | Select-Object -Unique | Sort-Object -Property Name
                if ( $dateien.Count -ne 0 ) {

Ich denke & hoffe, Du kannst mittlerweile den Schnipsel an die richtige Stelle im Skript packen.

Melde dich, falls dadurch jetzt irgendwo doppelt lange Ergebnisdateien kreiert werden (seufz)  ;)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Juni 14, 2020, 20:37:22
nur mal so zur Diskussion: man kann den Kram auch etwas vereinfachen:

            # Suchmaske fuer Dateien im Ordner
            $files = $ordner.FullName + "\*" # Achtung! fieser Trick, ohne "\*" gehts nicht!!!

            # falls weder Zieldatei noch getestete Zieldatei vorhanden sind...
            if ( -not ( Test-Path -Path $target ) ) {
                $dateien = Get-ChildItem -File -Path $files -Include "*.ts,*.TS" # kann man noch beliebig erweitern
                if ( $dateien.Count -ne 0 ) {

Ist funktional identisch, mal ausprobieren.

(wobei, das mit dem Klein/Großschriftproblem verstehe ich auch nicht)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 17, 2020, 15:59:29
Hab Eure Antworten gerade erst gesehen, beim aktualisieren im Browser bin ich immer wieder auf Seite 8 gelandet. Hab das Forum nochmal neu geöffnet und siehe da.
Also Sorry für die verspätete Antwort.
Werde Eure Ergänzungen heute Abend mal versuchen und berichten.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 17, 2020, 16:58:09
Ich habe das von MAM mal so ergänzt "*.ts,*.TS,*.TS4,*.ts4"
Passt das so?
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 17, 2020, 18:08:59
Sollte so klappen...
Aber in Deiner Umgebung muss man vielleicht vorsichtig mit solchen Aussagen sein, und hoffen, dass wenigstens einer der beiden Ansaetze klappt. ;D

Ein kleines Problem kannst Du vielleicht irgendwann mal antreffen, falls Du in einem einzelnen Ordner zufaellig .ts und .ts4 liegen haben solltest. Die wuerden mit Deiner Include-Anweisung dann komplett ALLE aneinandergepappt.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Juni 17, 2020, 20:03:32
ääh, mein Änderungsvorschlag ging eigentlich in Richtung tsduser  :-*

Es macht keinen Sinn, das 2 Leute an einem Skript basteln, er sollte es einfach mal ausprobieren und ggf. mit in kommende Versionen aufnehmen.

LED Zeppelin ist mit dieser Aufgabe doch wohl etwas überfordert  ;D

Aber ok, er hat das Prinzip verstanden und die Liste gleich erweitert, auch nicht schlecht.  ;D

Was ist TS4 ? ? ?  :o
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 17, 2020, 20:46:35
TS4 ist das Format in dem mein alter Technisat HDS2+ HD Ausstrahlungen aufgenommen hat.
TS für SD und TS4 für HD.

@tsduser

eigentlich sollten in einem Ordner keine ts und ts4 Dateien gemischt vorkommen, da jede Aufzeichnung einen eigenen Ordner haben sollte.
Aber wer weiß ob es nicht doch irgendwo eine gibt.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 17, 2020, 21:00:25
Folgendes Skript findet nichts:
# Quellverzeichnis mit Ordnern
$Quelle = "B:\Rest"

# Zielverzeichnis der .ts Ausgabedatei(en)
$Ziel = "I:\Test"

# 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
            $target = "`"" + $target + "`""
           # Suchmaske fuer Dateien im Ordner
            $files = $ordner.FullName + "\*" # Achtung! fieser Trick, ohne "\*" gehts nicht!!!

            # falls weder Zieldatei noch getestete Zieldatei vorhanden sind...
            if ( -not ( Test-Path -Path $target ) ) {
                $dateien = Get-ChildItem -File -Path $files -Include "*.ts,*.TS,*.TS4,*.ts4" # kann man noch beliebig erweitern
                if ( $dateien.Count -ne 0 ) {
$files = " `""+$dateien[0].FullName+"`""
for ( $i = 1 ; $i -lt $dateien.Count ; $i++ ) { $files += " + `""+($dateien[$i].FullName)+"`" " }
                # 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 .ts-Dateien in " + $ordner.Fullname + " gefunden." }
            }
        }
    } else { Write-Host "Keine Ordner in $Quelle gefunden." }
} else { Write-Host "Zielverzeichnis $Ziel existiert nicht!" }

Ergebnis:
B:\Rest\1939-40, ein _Feldzug_ nach Frankreic
Keine .ts-Dateien in  + B:\Rest\1939-40, ein _Feldzug_ nach Frankreic +  gefunden.
B:\Rest\Bärenkinder
Keine .ts-Dateien in  + B:\Rest\Bärenkinder +  gefunden.

Was auch stimmt, da sich TS im einen Ordner und TS4 Dateien im Bärenkinder Ordner befinden.
Evtl. habe ich es doch falsch eingefügt?
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 17, 2020, 21:03:20
Das Skript von tsduser funktioniert.
Habe es leicht verändert und TS4 aus ts gemacht.
Beide Dateien werden gefunden.
Ich versuch jetzt mal das noch um alle nötigen Formate zu erweitern.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 17, 2020, 21:18:35
Das sieht dann so aus und funktioniert.

# Quellverzeichnis mit Ordnern
$Quelle = "B:\Rest"

# Zielverzeichnis der .ts Ausgabedatei(en)
$Ziel = "I:\Test"

# 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
            $target = "`"" + $target + "`""
            # Suchmaske fuer Dateien im Ordner
            $filesL = $ordner.FullName + "\*.ts"
$filesN = $ordner.FullName + "\*.ts4"
$filesR = $ordner.FullName + "\*.TS4"
            $filesU = $ordner.FullName + "\*.TS"
      
            # falls weder Zieldatei noch getestete Zieldatei vorhanden sind...
            if ( -not ( Test-Path -Path $target ) ) {
                $dateienL = Get-ChildItem -File -Path $filesL
$dateienN = Get-ChildItem -File -Path $filesN
$dateienR = Get-ChildItem -File -Path $filesR
                $dateienU = Get-ChildItem -File -Path $filesU
                $dateien = $dateienL + $dateienN + $dateienR + $dateienU | Select-Object -Unique | Sort-Object -Property Name
                if ( $dateien.Count -ne 0 ) {
$files = " `""+$dateien[0].FullName+"`""
for ( $i = 1 ; $i -lt $dateien.Count ; $i++ ) { $files += " + `""+($dateien[$i].FullName)+"`" " }
                # 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 .ts-Dateien in " + $ordner.Fullname + " gefunden." }
            }
        }
    } else { Write-Host "Keine Ordner in $Quelle gefunden." }
} else { Write-Host "Zielverzeichnis $Ziel existiert nicht!" }
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Juni 18, 2020, 06:49:53
ich sagte ja: tsduser soll meine Änderungen ausprobieren und ggf. aufnehmen. Wobei, das Klein/Großschriftproblem sollte eigentlich überhaupt nicht existieren, sofern man nicht intensiv am Dateisystem rumgepfuscht hat...

(auch bei Windows KANN man das einschalten, tut aber niemand auf der Welt)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 18, 2020, 07:29:17
Ich habe keine bewussten Änderungen am Dateisystem vorgenommen.
Ob das irgendein Programm von sich aus gemacht hat kann ich natürlich nicht sagen.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Juni 18, 2020, 09:21:44
Zitat von: LED ZEPPELIN am Juni 18, 2020, 07:29:17
Ich habe keine bewussten Änderungen am Dateisystem vorgenommen.
Ob das irgendein Programm von sich aus gemacht hat kann ich natürlich nicht sagen.
Das habe ich auch gar nicht unterstellt  ;D
Ich sag nur: es WÜRDE gehen, wenn man die richtigen (aber sehr gut versteckten) Schalter umlegt.
Für den normalen Anwender ist diese Einstellung nicht möglich.
(Windows braucht das, damit NFS Verbindungen zu Unix Maschinen normal funktionieren können, aber das ist inzwischen schon fast in Vergessenheit geraten und in der Versenkung verschwunden)

Ich kann bei meinen Versuchen hier aber keine Auswirkung bei Klein/Grosschrift Dateien feststellen. get-childitem liefert immer beide.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 18, 2020, 10:26:57
Habe ich auch nicht so verstanden.
Bei mir gab es das Problem ja auch nicht bei allen HDDs sondern es ist bei einer aufgetreten und danach immer vorhanden gewesen.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 18, 2020, 11:32:54
Funktioniert doch nicht ganz perfekt.
Wenn das Skript auf einen Ordner mit nur einer ts etc. Datei stößt wird dieser übersprungen.
Es macht dann aber nicht immer mit dem nächsten Ordner weiter sondern kehrt zum letzten Ordner mit mehreren ts etc. Dateien zurück.
Auf der Ziel HDD wird die bereits existierende Datei aber nicht überschrieben.
Obwohl das cmd Fenster dies suggeriert.

Dieses Verhalten kann man aber beenden in dem man das cmd Fenster schliesst. Dann läuft es normal weiter bis es eben wieder auf einen Ordner mit nur einer Datei stößt. Das passiert oft, aber nicht immer.

Ich denke ich werde jetzt mal die HDDs auslesen und dann Ordner erstellen in die ich die geteilten Aufnahmen verschiebe und das Skript nur noch darüber laufen lassen. Das sollte das Problem lösen.
Gestern hats mit meinem Testordner in dem nur geteilte Aufnahmen mit verschiedenen Endungen waren ja auch funktioniert.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 18, 2020, 18:58:11
@Mam:
Hast Du mal das "WSL" (Windows Subsystem for Linux, eine Ubuntu-VM in W10) ausprobiert? Das sollte auch irgendwas mit der Datei-Gross/Klein-Schreibung umstellen. Habe ich selber aber noch nie naeher betrachtet. Entweder nehme ich Cygwin, oder gleich eine eigene Linux-VM.
Und ich kann da leider nichts "einbauen und ausprobieren"; bei mir bekomme ich das Problem ja auch nicht nachgestellt...

Der Rest @LED ZEPPELIN:
Wir werden Dich hier schon noch zum Programmierer umfunktionieren  8)
Deine eigene Erweiterung fuer ts4/TS4 war schon mal voellig korrekt, IMHO.

Gehen wir die Sache doch mal (vergleichsweise) nachhaltig an.

Probiere bitte dieses Skript (aus Deinem juengsten Code-Post)
# Quellverzeichnis mit Ordnern
$Quelle = "B:\Rest"

# Zielverzeichnis der .ts Ausgabedatei(en)
$Ziel = "I:\Test"

# Logdatei zur Problemanalyse
$Log = "I:\Test\_Log.txt"

# 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 ) {
        $folders.FullName | Out-File -FilePath $Log -Append -Encoding utf8
        foreach ( $ordner in $folders ) {
            # Kontrollausgabe
            $ordner.FullName
            "Aktueller Ordner: " + $ordner.FullName | Out-File -FilePath $Log -Append -Encoding utf8
            # Name der Zieldatei
            $Stub = $Ziel + $ordner.BaseName
            # neue Datei
            $target = $Stub + ".ts"
            # bei Leerzeichen Anfuehrungszeichen hinzu
            $target = "`"" + $target + "`""
            "Zieldatei: " + $target | Out-File -FilePath $Log -Append -Encoding utf8
            # Suchmaske fuer Dateien im Ordner
            $filesL = $ordner.FullName + "\*.ts"
            $filesN = $ordner.FullName + "\*.ts4"
            $filesR = $ordner.FullName + "\*.TS4"
            $filesU = $ordner.FullName + "\*.TS"
     
            # nur falls Zieldatei nicht vorhanden ist...
            if ( -not ( Test-Path -Path $target ) ) {
                $dateienL = Get-ChildItem -File -Path $filesL
                $dateienN = Get-ChildItem -File -Path $filesN
                $dateienR = Get-ChildItem -File -Path $filesR
                $dateienU = Get-ChildItem -File -Path $filesU
                "DateienL: " | Out-File -FilePath $Log -Append -Encoding utf8
                Tee-Object -FilePath $Log -Append -InputObject $dateienL.FullName
                "DateienN: " | Out-File -FilePath $Log -Append -Encoding utf8
                Tee-Object -FilePath $Log -Append -InputObject $dateienN.FullName
                "DateienR: " | Out-File -FilePath $Log -Append -Encoding utf8
                Tee-Object -FilePath $Log -Append -InputObject $dateienR.FullName
                "DateienU: " | Out-File -FilePath $Log -Append -Encoding utf8
                Tee-Object -FilePath $Log -Append -InputObject $dateienU.FullName
                $dateien = $dateienL + $dateienN + $dateienR + $dateienU | Select-Object -Unique | Sort-Object -Property Name
                "Dateien: " | Out-File -FilePath $Log -Append -Encoding utf8
                Tee-Object -FilePath $Log -Append -InputObject $dateien.FullName
                if ( $dateien.Count -ne 0 ) {
                    $files = " `""+$dateien[0].FullName+"`""
                    "files1: " + $files | Out-File -FilePath $Log -Append -Encoding utf8
                    for ( $i = 1 ; $i -lt $dateien.Count ; $i++ ) { $files += " + `""+($dateien[$i].FullName)+"`" " }
                    "filesAlle: " + $files | Out-File -FilePath $Log -Append -Encoding utf8
                    # 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 .ts- oder .ts4-Dateien in >" $ordner.Fullname "< gefunden." ; "Keine Dateien im Ordner." | Out-File -FilePath $Log -Append -Encoding utf8 }
            }
        }
    } else { Write-Host "Keine Ordner in $Quelle gefunden." ; "$Quelle ohne Ordner." | Out-File -FilePath $Log -Append -Encoding utf8 }
} else { Write-Host "Zielverzeichnis $Ziel existiert nicht!" ; "Ziel $Ziel nicht vorhanden." | Out-File -FilePath $Log -Append -Encoding utf8 }

und lade dann hier die vom Skript erstellte Datei "I:\Test\_Log.txt" hoch.
Diese Logdatei enthaelt (hofentlich...) etliche Informationen zu den Variableninhalten im Verlaufe der Skriptabarbeitung, und ich erwarte, dass das vielleicht ein wenig mehr Klarheit in die Sache bringt.

Bitte das Log nicht unbedingt als Text posten, sondern einfach die Datei als Anhang hochladen.
Und es waere vorteilhaft, wenn Du Deine Code-Postings auch nicht als Plain Text hier postest, sondern in einer "Code:"-Umgebung (das ist der Button mit dem Lattenzaun/Hashmark/"#" ueber dem Texteingabefeld hier). Weiteres Plus: Die "Code:"-Umgebung hat gleich ein "Auswählen" mit dran  ;)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Juni 18, 2020, 20:51:36
Zitat von: tsduser am Juni 18, 2020, 18:58:11
@Mam:
Hast Du mal das "WSL" (Windows Subsystem for Linux, eine Ubuntu-VM in W10) ausprobiert? Das sollte auch irgendwas mit der Datei-
@tsduser: JEIN  ;D
Ubuntu ist DAS rote Tuch für mich, eindeutig die mieseste Distribution, die man sich antuen kann (Microsoft nimmt es deshalb vielleicht als Abschreckung ? )
Also WSL hat hier nicht wirklich lange überlebt  ;D

Aber, wenn ich mich recht besinne, auch da gabs keine G/K Unterscheidung, zumindest nicht, wenn man auf Windows Dateien zugreift.


Das das Skript bei ihm bei "nur eine TS-Datei vorhanden" "hängenbleibt" ist logisch.
Da kommt dann eine syntaktisch falsche "copy /b ..." Zeile raus und der cmd sieht sich genötigt, eine Fehlermeldung auszuspucken und auf Besserung zu warten.
Du must wohl noch gucken, ob wirklich MEHR als eine Datei da ist, und nur dann die Zusammenführung machen. Ansonsten nur ein normaler Copy, ohne "+ ..."

Aber insgesamt finde ich den ganzen Ansatz, mit "wir wechseln die komplette Betriebsumgebung, weil wir keinen Ersatz für Copy + finden" etwas traurig. Das muss auch "legal" gehen mit der PS, wir sind nur zu doof :-)

Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 18, 2020, 21:17:26
Ich glaube da haben wir einen Denkfehler drin.
Von Quelle B Rest nach I hat es ja funktioniert.
Das Problem lag bei einer anderen HDD vor.

Um da ein log File zu bekommen muss ich das erst mal umschreiben und durchlaufen lassen.

Ich lade es dann hoch wenn es fertig ist.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 18, 2020, 21:33:47
Bei nur einer gefundenen Datei wird $files VOR der for-Schleife mit dem Quelldateinamen belegt, und die ab dem zweiten Element (Index [1], das ja nicht vorhanden ist) zu durchlaufende Schleife wird erst gar nicht gestartet mit ihren Plus-Zeichen.
Eigentlich sollte das Skript deshalb nicht haengenbleiben, und der copy-Aufruf trotzdem syntaktisch richtig sein.

Aber gerade sehe ich, dass die Addition von den 1-objektigen Dateien dateienL, dateienU usw. nicht funktioniert; das klappt nur bei mehr-objektigen...
Muss ich mal schnell drumrum basteln, also lohnt ein Durchlauf jetzt noch nicht.
Und JA: Den Namen und das Verzeichnis der Logdatei musst Du ebenso anpassen wie Quell- und Ziel-Ordner.

Trotzdem bin ich gespannt auf die Logdatei. Spaeter...

Ich hatte mir auch erst gedacht, dass da doch ein binaeres Kopieren in der PoSh geht, aber die Fundstellen im Web haben einhellig berichtet, dass die Variante mit copy /b auf der Eingabeaufforderung eine um Laengen schnellere Ausfuehrung ergibt. Und das ist bei so großen Datenmengen schon ein Pfund, wenn man nicht auf so potente Hardware wie die, die Du hier immer wieder schilderst, zurueckgreifen kann.  :'( :'( :'(
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 18, 2020, 21:35:49
Irgendwas läuft da völlig schief.
Da kommen Dateien raus die alle die gleiche Größe haben bzw. die, die nur aus einer Datei bestehen haben die Größe der nächsten Datei mit mehreren Teilen?

Da das Skript wie gesagt immer wieder auf vorher schon bearbeitete Dateien zurückgreift bin ich mir nicht sicher ob es jemals fertig wird.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 18, 2020, 21:37:59
Ich kriege morgen 16 GB Arbeitsspeicher, das hilft hoffentlich etwas.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Juni 18, 2020, 21:48:20
Zitat von: tsduser am Juni 18, 2020, 21:33:47Und das ist bei so großen Datenmengen schon ein Pfund, wenn man nicht auf so potente Hardware wie die, die Du hier immer wieder schilderst, zurueckgreifen kann.  :'( :'( :'(
Nicht weinen bitte  :-[
Das Zeuch wird doch stetig billiger,bald ist das Massenware.

Ein Tipp: der vorletzte Fileserver von mir steht gerade an der Strasse und wartet auf den Schrotthändler, der ihn einläd!

(ist aber nur ein alter AMD 6 Core mit 32Gb in nem 4U Gehäuse mit 10*Hotswap Einschüben... sauschwer!!!)
(PPS: beim Abholen bitte Schutzkleidung und Handschuhe anziehen! Das Dingen hat über 15 Jahre lang in der Garage (offenes Fenster zum Garten und Frau lagert da im Winter auch immer ihre Blumen ein) überlebt. "Dreck" ist echt untertrieben  ;D Die Miefquirle haben so ziemlich alles eingesaugt, was der Raum zu bieten hatte (das meiste war aber zum Glück schon tot))

Zitat von: LED ZEPPELIN
Ich kriege morgen 16 GB Arbeitsspeicher, das hilft hoffentlich etwas.
Ooops, wie gerade erwähnt, hier liegen 32Gb DDR3 Speicher am Strassenrand...
;D
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 18, 2020, 22:20:42
OK, so sollte es jetzt aber wirklich gehen, auch bei Ordnern mit genau einer gefundenen Datei, und ohne den vorherigen Ordner nochmals zu bearbeiten:
                $dateien = $null
                $dateienL = @(Get-ChildItem -File -Path $filesL)
                $dateienN = @(Get-ChildItem -File -Path $filesN)
                $dateienR = @(Get-ChildItem -File -Path $filesR)
                $dateienU = @(Get-ChildItem -File -Path $filesU)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 19, 2020, 09:22:14
Schaut gut aus.
Habe zwei Testläufe gemacht.
Verschiedene Endungen sind kein Problem mehr.
Läuft auch ohne Probleme und Rückwärtssprünge durch.

Log File der Problem HDD von gestern siehe Anhang.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 19, 2020, 10:52:06
Na, das sieht doch erst einmal gut aus so weit...
Ein leerer Ordner ist dabei, GROSSE TS und kleine ts Dateien (werden aber in diesem Log immer sowohl bei dateienL wie auch bei dateienU gefunden, so wie wir es eigentlich erwartet haben)...

Dann sind wir mal gespannt, wie das Log aussieht, wenn wieder ein Problem auftritt.

Ach ja: Die Log-Datei solltest Du vielleicht nach jedem Lauf umbenennen, oder im Erfolgsfalle auch einfach nur loeschen. Sonst wird die immer groesser, weil immer nur hinten drangehaengt wird.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 19, 2020, 11:01:53
Kann ich machen.
Aber das bewegt sich ja im KB Bereich, von daher ist das kein Problem.
Nur das Lesen wird halt irgendwann mühsam.

Vielen Dank mal wieder bis hierhin.

Ich fürchte aber das wars noch nicht. Irgendwelche Probleme werden schon wieder auftreten.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 19, 2020, 11:12:52
Zitat von: LED ZEPPELINNur das Lesen wird halt irgendwann mühsam.
Genau. Speziell fuer die, die Fehler suchen wollen  ;)

Zitat von: LED ZEPPELINIrgendwelche Probleme werden schon wieder auftreten.
Genau deshalb bin ja auf die dann erstellten Logs neugierig.

Du kannst uebrigens auch die Zeile mit dem Namen fuer die Logdatei ergaenzen:
$Log = "I:\Test\" + (Get-Date -Format yyMMdd-HHmmss) + "_Log.txt"
Dann musst Du nur noch aufpassen, dass Du nicht zwei Jobs in derselben Sekunde startest.
(OK, klar kann man auch das verhindern, aber, naja...)
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 19, 2020, 12:01:23
Habs geändert.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 24, 2020, 08:11:17
Hab heute früh das Skript wieder laufen lassen und es war eine Katastrophe.
Dateien wurden mit falschen Inhalten überschrieben (Bsp. Datei ca. 1,6GB groß, mit Inhalt der nächsten Mehrteiligen überschrieben) oder mit Fehlermeldung übersprungen.
Ich versteh nur Bahnhof.
Hab nix geändert zum letzten mal außer natürlich die Pfade.
Im Anhang das logfile.
Es kann doch nicht sein, dass man für jede HDD ein neues Skript braucht. Echt seltsam.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Juni 24, 2020, 08:19:36
Hmm, Deine Dateinamen sind ja auch wirklich eine Herausforderung für jedes Skript :-)

Die enthalten so ziemlich ALLES (Punkte, Leerzeichen, Klammern, Zahlen), was man besser NICHT benutzen sollte.

Und manchmal sind sie auch noch unmotiviert abgeschnitten... ("1973. Jom-Kippur. Ein Krieg im Oktobe")

Also, dabei reicht es, wenn man irgendwo schon aus Flüchtigkeit ein Anführungszeichen oder ein Apostroph vergisst, schon fliegt das Skript auf die Nase.

Schon alleine Umlaute sind "gefährlich" in Dateinamen...

Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 24, 2020, 08:56:08
Die habe ich nicht geschrieben.
Das sind die Namen wie sie von den Receivern geliefert wurden.

Das Überschreibproblem gab es wohl vorher auch schon, ist mir nur nicht aufgefallen.

Habe gerade die Ergebnisse eines vorherigen Durchlaufs gecheckt und festgestellt dass ein paar Dateien mit unterschiedlichem Namen die gleiche Größe und leider auch den gleichen Inhalt haben. Traue mich gerade nicht mir weitere anzusehen weil ich die Ursprungsdateien ja bereits gelöscht habe. Wenn die Namen der Filme jetzt zu völlig anderen Inhalten führen kann ich das ganze Projekt in die Tonne treten. Sehr bitter.
Habe jetzt nur Ordner mit mehreren ts Dateien pro Film durchlaufen lassen. Das scheint zu funktionieren.
Aber besser erst mal abwarten. Wie die Vergangenheit zeigt liegt bestimmt bei der nächsten HDD wieder irgendwo ein Problem vor.


Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 24, 2020, 09:24:31
Also, mir kommen die Ordner- und Dateinamen mittlerweile recht vertraut vor :-)

Aber Sorry, eine weitere Nachlaessigkeit von mir.
Entweder startest Du das Script immer in einer neuen PowerShell-(ISE-)Instanz, oder ergaenzt dies:
                $dateien = $null
                $dateienL = $null
                $dateienN = $null
                $dateienR = $null
                $dateienU = $null
                $dateienL = @(Get-ChildItem -File -Path $filesL)
                $dateienN = @(Get-ChildItem -File -Path $filesN)
                $dateienR = @(Get-ChildItem -File -Path $filesR)
                $dateienU = @(Get-ChildItem -File -Path $filesU)

Damit sollte auf jeden Fall das Schreiben von Dateien mit falschen Inhalten verhindert werden. Ein Ueberschreiben von Dateien kann ich immer noch nicht sehen.

Das Log zeigt ja, dass
- DateienL und DateienU korrekt gefuellt sind
- dateien (die Summe von Dateien*) aber immer wieder nur die "Jom Kippur"-Teile enthaelt. (Und das sogar schon beim ERSTEN Aufruf...)
Beispielsweise:
Aktueller Ordner: Q:\Das Osterman-Weekend
Zieldatei: "N:\Test\Das Osterman-Weekend.ts"
DateienL:
Q : \ D a s   O s t e r m a n - W e e k e n d \ D a s   O s t e r m a n - W e e k e n d . T S

DateienN:
DateienR:
DateienU:
Q : \ D a s   O s t e r m a n - W e e k e n d \ D a s   O s t e r m a n - W e e k e n d . T S

Dateien:
Q : \ 1 9 7 3 .   J o m - K i p p u r .   E i n   K r i e g   i m   O k t o b e \ 1 9 7 3 .   J o m - K i p p u r .   E i n   K r i e g   i m   O k t o b e . T S

Q : \ 1 9 7 3 .   J o m - K i p p u r .   E i n   K r i e g   i m   O k t o b e \ 1 9 7 3 .   J o m - K i p p u r .   E i n   K r i e g   i m   O k t o b e 1 . T S

Q : \ 1 9 7 3 .   J o m - K i p p u r .   E i n   K r i e g   i m   O k t o b e \ 1 9 7 3 .   J o m - K i p p u r .   E i n   K r i e g   i m   O k t o b e 2 . T S

files1:  "Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe.TS"
filesAlle:  "Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe.TS" + "Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe1.TS"  + "Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe2.TS"

Fehlt bei Dir etwa noch die @()-Klammerung?
Beim ersten Verzeichnis, wo es dann wieder richtig funktioniert, bricht das Log ab.

Gerade die von Dir erwaehnten "Fehlermeldungen", von denen ich vermute, dass sie bei der (versuchten) Objekt-Addition zu $dateien ausgegeben werden, waeren jetzt echt interessant...
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 24, 2020, 11:02:36
Hm, also, so bei nochmaligem Druebernachdenken kann ich mir nicht erklaeren, warum $dateien zu diesem Zeitpunkt die falschen Informationen enthaelt...
Kurz vorher wird die Variable ja eigentlich auf $null gesetzt, und dann aus dem AKTUELLEN Inhalt von $dateienL/N/R/U zusammengesetzt. Selbst wenn das schiefgeht, sollte nicht ploetzlich wieder der alte Inhalt in $dateien drin sein...

Poste doch nochmal Dein aktuelles Script (in einer code-Umgebung), zusammen mit den Fehlermeldungen, die Du erwaehntest.

Falls diese Meldungen innerhalb der PowerShell ausgegeben werden, kannst Du auch dies ganz an den Anfang des Scripts setzen:
$TransLog = "I:\Test\" + (Get-Date -Format yyMMdd-HHmmss) + "_TransLog.txt"
Start-Transcript -Path $TransLog -Force

Dann musst Du aber die PowerShell am Ende auf jeden Fall beenden, und uns auch die "<Datum>-TransLog.txt" zeigen.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: Mam am Juni 24, 2020, 11:16:49
es ist zu warm zum Programmieren  ;D
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 24, 2020, 11:32:20
Fehlt bei Dir etwa noch die @()-Klammerung?

Ja. Habe ich jetzt eingefügt.

Fehlermeldung ist Folgende:
Q:\11.10.2011 12_07 SPIEGEL Geschichte - Das Magazin  Speer\11.10.2011 12_07 SPIEGEL Geschichte - Das Magazin  Speer.TS
Fehler beim Aufrufen der Methode, da [System.IO.FileInfo] keine Methode mit dem Namen "op_Addition" enthält.
In Zeile:53 Zeichen:17
+ ...             $dateien = $dateienL + $dateienN + $dateienR + $dateienU  ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (op_Addition:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

Und dann schreibt er die nächste Datei mit mehreren Datein mal richtig oder überschreibt die Speer.TS. Der Name Speer bleibt aber erhalten.
Hier der Code. Das Log im Anhang.

PS C:\Users\ICH> # Quellverzeichnis mit Ordnern
$Quelle = "Q:\"

# Zielverzeichnis der .ts Ausgabedatei(en)
$Ziel = "N:\Test"

# Logdatei zur Problemanalyse
$Log = "N:\Test\" + (Get-Date -Format yyMMdd-HHmmss) + "_Log.txt"

# 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 ) {
        $folders.FullName | Out-File -FilePath $Log -Append -Encoding utf8
        foreach ( $ordner in $folders ) {
            # Kontrollausgabe
            $ordner.FullName
            "Aktueller Ordner: " + $ordner.FullName | Out-File -FilePath $Log -Append -Encoding utf8
            # Name der Zieldatei
            $Stub = $Ziel + $ordner.BaseName
            # neue Datei
            $target = $Stub + ".ts"
            # bei Leerzeichen Anfuehrungszeichen hinzu
            $target = "`"" + $target + "`""
            "Zieldatei: " + $target | Out-File -FilePath $Log -Append -Encoding utf8
            # Suchmaske fuer Dateien im Ordner
            $filesL = $ordner.FullName + "\*.ts"
            $filesN = $ordner.FullName + "\*.ts4"
            $filesR = $ordner.FullName + "\*.TS4"
            $filesU = $ordner.FullName + "\*.TS"
     
            # nur falls Zieldatei nicht vorhanden ist...
            if ( -not ( Test-Path -Path $target ) ) {
                $dateienL = Get-ChildItem -File -Path $filesL
                $dateienN = Get-ChildItem -File -Path $filesN
                $dateienR = Get-ChildItem -File -Path $filesR
                $dateienU = Get-ChildItem -File -Path $filesU
                "DateienL: " | Out-File -FilePath $Log -Append -Encoding utf8
                Tee-Object -FilePath $Log -Append -InputObject $dateienL.FullName
                "DateienN: " | Out-File -FilePath $Log -Append -Encoding utf8
                Tee-Object -FilePath $Log -Append -InputObject $dateienN.FullName
                "DateienR: " | Out-File -FilePath $Log -Append -Encoding utf8
                Tee-Object -FilePath $Log -Append -InputObject $dateienR.FullName
                "DateienU: " | Out-File -FilePath $Log -Append -Encoding utf8
                Tee-Object -FilePath $Log -Append -InputObject $dateienU.FullName
                $dateien = $dateienL + $dateienN + $dateienR + $dateienU | Select-Object -Unique | Sort-Object -Property Name
                "Dateien: " | Out-File -FilePath $Log -Append -Encoding utf8
                Tee-Object -FilePath $Log -Append -InputObject $dateien.FullName
                if ( $dateien.Count -ne 0 ) {
                    $files = " `""+$dateien[0].FullName+"`""
                    "files1: " + $files | Out-File -FilePath $Log -Append -Encoding utf8
                    for ( $i = 1 ; $i -lt $dateien.Count ; $i++ ) { $files += " + `""+($dateien[$i].FullName)+"`" " }
                    "filesAlle: " + $files | Out-File -FilePath $Log -Append -Encoding utf8
                    # 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 .ts- oder .ts4-Dateien in >" $ordner.Fullname "< gefunden." ; "Keine Dateien im Ordner." | Out-File -FilePath $Log -Append -Encoding utf8 }
            }
        }
    } else { Write-Host "Keine Ordner in $Quelle gefunden." ; "$Quelle ohne Ordner." | Out-File -FilePath $Log -Append -Encoding utf8 }
} else { Write-Host "Zielverzeichnis $Ziel existiert nicht!" ; "Ziel $Ziel nicht vorhanden." | Out-File -FilePath $Log -Append -Encoding utf8 }
Q:\11.10.2011 12_07 SPIEGEL Geschichte - Das Magazin  Speer
Q:\11.10.2011 12_07 SPIEGEL Geschichte - Das Magazin  Speer\11.10.2011 12_07 SPIEGEL Geschichte - Das Magazin  Speer.TS
Q:\11.10.2011 12_07 SPIEGEL Geschichte - Das Magazin  Speer\11.10.2011 12_07 SPIEGEL Geschichte - Das Magazin  Speer.TS
Fehler beim Aufrufen der Methode, da [System.IO.FileInfo] keine Methode mit dem Namen "op_Addition" enthält.
In Zeile:53 Zeichen:17
+ ...             $dateien = $dateienL + $dateienN + $dateienR + $dateienU  ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (op_Addition:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

Q:\Rest1\The American\The American.TS
Q:\Rest1\The American\The American1.TS
Q:\1973. Jom-Kippur. Ein Krieg im Oktobe
Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe.TS
Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe1.TS
Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe2.TS
Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe.TS
Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe1.TS
Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe2.TS
Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe.TS
Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe1.TS
Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe2.TS
Q:\31.12.2011 14_02 Ein Herz und eine Seele - Kanalloch
Q:\31.12.2011 14_02 Ein Herz und eine Seele - Kanalloch\31.12.2011 14_02 Ein Herz und eine Seele - Kanalloch_0.TS
Q:\31.12.2011 14_02 Ein Herz und eine Seele - Kanalloch\31.12.2011 14_02 Ein Herz und eine Seele - Kanalloch_0.TS
Fehler beim Aufrufen der Methode, da [System.IO.FileInfo] keine Methode mit dem Namen "op_Addition" enthält.
In Zeile:53 Zeichen:17
+ ...             $dateien = $dateienL + $dateienN + $dateienR + $dateienU  ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (op_Addition:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe.TS
Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe1.TS
Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe2.TS
Q:\31.12.2011 17_42 Ein Herz und eine Seele - Zebrastreifen + Mädchen
Q:\31.12.2011 17_42 Ein Herz und eine Seele - Zebrastreifen + Mädchen\31.12.2011 17_42 Ein Herz und eine Seele - Zebrastreifen + Mädchen_0.TS
Q:\31.12.2011 17_42 Ein Herz und eine Seele - Zebrastreifen + Mädchen\31.12.2011 17_42 Ein Herz und eine Seele - Zebrastreifen + Mädchen_0.TS
Fehler beim Aufrufen der Methode, da [System.IO.FileInfo] keine Methode mit dem Namen "op_Addition" enthält.
In Zeile:53 Zeichen:17
+ ...             $dateien = $dateienL + $dateienN + $dateienR + $dateienU  ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (op_Addition:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe.TS
Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe1.TS
Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe2.TS
Q:\Aerosmith Rock
Q:\Aerosmith Rock\Aerosmith Rocks Donington 2014.ts
Q:\Aerosmith Rock\Aerosmith Rocks Donington 2014.ts
Fehler beim Aufrufen der Methode, da [System.IO.FileInfo] keine Methode mit dem Namen "op_Addition" enthält.
In Zeile:53 Zeichen:17
+ ...             $dateien = $dateienL + $dateienN + $dateienR + $dateienU  ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (op_Addition:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe.TS
Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe1.TS
Q:\1973. Jom-Kippur. Ein Krieg im Oktobe\1973. Jom-Kippur. Ein Krieg im Oktobe2.TS
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 24, 2020, 11:53:17
Naja, dass die Klammern gerade bei 1-elementigen Ordnern notwendig sind, hatten wir doch vor einigen Posts ja schon geklaert.

Ausserdem hast Du die Zeile "$dateien = $null" nicht in Deinem Script. Da hatte ich in meinem vorletzten Post ja noch die $dateienL/N/R/U hinzugefuegt (was nicht unbedingt notwendig sein sollte, aber sicher auch nicht schadet).

Dein Script sollte (bis auf die Pfade, und evtl. das Transcript...) jetzt so aussehen:
$TransLog = "I:\Test\" + (Get-Date -Format yyMMdd-HHmmss) + "_TransLog.txt"
Start-Transcript -Path $TransLog -Force

# Quellverzeichnis mit Ordnern
$Quelle = "B:\Rest"

# Zielverzeichnis der .ts Ausgabedatei(en)
$Ziel = "I:\Test"

# Logdatei zur Problemanalyse
$Log = "I:\Test\" + (Get-Date -Format yyMMdd-HHmmss) + "_Log.txt"

# 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 ) {
        $folders.FullName | Out-File -FilePath $Log -Append -Encoding utf8
        foreach ( $ordner in $folders ) {
            # Kontrollausgabe
            $ordner.FullName
            "Aktueller Ordner: " + $ordner.FullName | Out-File -FilePath $Log -Append -Encoding utf8
            # Name der Zieldatei
            $Stub = $Ziel + $ordner.BaseName
            # neue Datei
            $target = $Stub + ".ts"
            # bei Leerzeichen Anfuehrungszeichen hinzu
            $target = "`"" + $target + "`""
            "Zieldatei: " + $target | Out-File -FilePath $Log -Append -Encoding utf8
            # Suchmaske fuer Dateien im Ordner
            $filesL = $ordner.FullName + "\*.ts"
            $filesN = $ordner.FullName + "\*.ts4"
            $filesR = $ordner.FullName + "\*.TS4"
            $filesU = $ordner.FullName + "\*.TS"
     
            # nur falls Zieldatei nicht vorhanden ist...
            if ( -not ( Test-Path -Path $target ) ) {
                $dateien = $null
                $dateienL = $null
                $dateienN = $null
                $dateienR = $null
                $dateienU = $null
                $dateienL = @(Get-ChildItem -File -Path $filesL)
                $dateienN = @(Get-ChildItem -File -Path $filesN)
                $dateienR = @(Get-ChildItem -File -Path $filesR)
                $dateienU = @(Get-ChildItem -File -Path $filesU)
                "DateienL: " | Out-File -FilePath $Log -Append -Encoding utf8
                Tee-Object -FilePath $Log -Append -InputObject $dateienL.FullName
                "DateienN: " | Out-File -FilePath $Log -Append -Encoding utf8
                Tee-Object -FilePath $Log -Append -InputObject $dateienN.FullName
                "DateienR: " | Out-File -FilePath $Log -Append -Encoding utf8
                Tee-Object -FilePath $Log -Append -InputObject $dateienR.FullName
                "DateienU: " | Out-File -FilePath $Log -Append -Encoding utf8
                Tee-Object -FilePath $Log -Append -InputObject $dateienU.FullName
                $dateien = $dateienL + $dateienN + $dateienR + $dateienU | Select-Object -Unique | Sort-Object -Property Name
                "Dateien: " | Out-File -FilePath $Log -Append -Encoding utf8
                Tee-Object -FilePath $Log -Append -InputObject $dateien.FullName
                if ( $dateien.Count -ne 0 ) {
                    $files = " `""+$dateien[0].FullName+"`""
                    "files1: " + $files | Out-File -FilePath $Log -Append -Encoding utf8
                    for ( $i = 1 ; $i -lt $dateien.Count ; $i++ ) { $files += " + `""+($dateien[$i].FullName)+"`" " }
                    "filesAlle: " + $files | Out-File -FilePath $Log -Append -Encoding utf8
                    # 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 .ts- oder .ts4-Dateien in >" $ordner.Fullname "< gefunden." ; "Keine Dateien im Ordner." | Out-File -FilePath $Log -Append -Encoding utf8 }
            } else { Write-Host "Zieldatei $target existiert bereits." ; "$target bereits vorhanden." | Out-File -FilePath $Log -Append -Encoding utf8 }
        } # Ende foreach
    } else { Write-Host "Keine Ordner in $Quelle gefunden." ; "$Quelle ohne Ordner." | Out-File -FilePath $Log -Append -Encoding utf8 }
} else { Write-Host "Zielverzeichnis $Ziel existiert nicht!" ; "Ziel $Ziel nicht vorhanden." | Out-File -FilePath $Log -Append -Encoding utf8 }
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 24, 2020, 12:41:31
Ich habe ja auch das alte Skript verwendet um die Fehlermeldung nochmal zu reproduzieren.
Dachte die wolltest Du.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 24, 2020, 12:48:01
Aeh, nein...
Bereits behobene Fehler moechte ich nicht nochmals bearbeiten (muessen).

Ganz ehrlich: Was fuer Fehler mit neuen Quellordnern bei Verwendung von alten Skriptversionen noch auftreten moegen, interessiert mich kein bischen. Wir sollten uns auf AKTUELLE Fehler mit AKTUELLEN Skriptversionen beschraenken.

Irgendwie ist meine Motivation gerade so 1 bis 2 Stufen abgesackt...
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 24, 2020, 13:06:01
Zitat von: tsduser am Juni 24, 2020, 09:24:31
Gerade die von Dir erwaehnten "Fehlermeldungen", von denen ich vermute, dass sie bei der (versuchten) Objekt-Addition zu $dateien ausgegeben werden, waeren jetzt echt interessant...

Dann habe ich das irgendwie falsch verstanden.
Kommt nicht wieder vor.
Wollte Dich nicht demotivieren.

Im Moment läuft das Neue Skript ohne Probleme durch. Wenn ich von den Dateigrößen der Ursprungsordner und der Zusammengefügten ausgehe scheint das auch zu passen.

Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: tsduser am Juni 24, 2020, 18:59:50
Um 09:24 Uhr war ich auch noch der offenbar irrigen Ansicht gewesen, Du haettest tatsaechlich ALLE vorgegebenen Aenderungen am Script verbaut, und nicht nur einzelne auserlesene...

Anyway. Wir haben's ja jetzt geklaert.

Wenn das Script jetzt laeuft, dann ist's ja soweit gut. In den Logdateien kannst Du Erfolg/Misserfolg ja auch direkt ablesen. Bei den naechsten Problemen wuerde ich vorgeschlagen, mach' einen neuen Thread auf, und schicke gleich die _log.txt und die _TransLog.txt mit. Diesen Thread hier haben wir ja mittlerweile sowas von gekapert...

...da macht's vielleicht auch nix, wenn ich gleich hier schreibe:
Solange sich HandBrake nicht an den "unge-doctor-ten" Eingabedateien verschluckt, macht es keinen Sinn, die in einem weiteren Zwischenschritt erst noch im TS-Doctor zu bearbeiten. Das erwaehnte "Eindampfen" erzeugt doch sowieso komplett neu codierte Filme. Sobald sich HB mal an einer Eingabe die Zaehne ausbeissen sollte, kannst Du die Datei ja immer noch reinigen bzw. verarzten lassen, und es danach frohen Mutes mit der erzeugten Datei im HB versuchen.
Titel: Re: Batch Datei automatisiert befüllen?
Beitrag von: LED ZEPPELIN am Juni 24, 2020, 21:39:06
Dann bin ich ja beruhigt.
Wollte ja keine mehrfache Arbeit für Dich erzeugen.

Das neue Thema ist eine gute Idee.

Kann unser Admin vielleicht einen Teil aus diesem dahin kopieren?

Wäre für Suchende sicher hilfreich.

Wie sollen wir ihn nennen?

Vielen Dank für den tollen Skriptentwicklungssupport.
Titel: Antw:Batch Datei automatisiert befüllen?
Beitrag von: woerndl am Januar 22, 2023, 13:27:42
Hallo Leute,

auch wenn dieser thread schon etwas abgehangen ist, schreibe ich mal hier, weil´s thematisch sehr gut passt.

Ich bin gerade in der Testphase und komme nicht weiter. Mein Anliegen ist, meine Reelbox-Aufnahmen in je eine Datei zusammenzufassen, ob .ts oder .mp4, ist erstmal egal.

Da die Reelbox einen Film immer auf mehrere Dateien verteilt, muss ich hunderte von Ordnern bzw. Unterordnern ansteuern und die idR. 3 bis 5 .ts-Dateien zusammenführen. Die Ordnerstruktur, die die Reelbox anlegt, sieht man im Screenshot im Anhang.

Mit dem FileMerger klappt das Zusammenführen auch, aber halt eben in Handarbeit.
Daher meine Frage: gibt es eine Möglichkeit, diese Schritte automatisiert ablaufen zu lassen, also per Stapelverarbeitung oder mit einer Batch-Datei?

Vielen Dank für Eure Hilfe!
woerndl

Ordnerstruktur.jpg