Batch Datei automatisiert befüllen?

Begonnen von Trimonium, Januar 03, 2020, 11:23:56

« vorheriges - nächstes »

LED ZEPPELIN

Das mit E: hat mit Deinem ursprünglichen Skript funktioniert.
Vielen Dank.

LED ZEPPELIN

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?

Mam

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.


LED ZEPPELIN

Versteh nicht ganz warum ich da noch was ändern soll wenns doch funktioniert?

Aber ich werd es mal testen um den Unterschied zu sehen.

Mam

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.

LED ZEPPELIN

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.

Mam

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ß...

LED ZEPPELIN

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.

tsduser

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.

LED ZEPPELIN

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?

LED ZEPPELIN

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?

tsduser

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.

LED ZEPPELIN

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.

Mam

#28
ää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.




LED ZEPPELIN

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.


www.cypheros.de