Batch Datei automatisiert befüllen?

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

« vorheriges - nächstes »

Mam

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)

LED ZEPPELIN

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?

tsduser

#47
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...

LED ZEPPELIN

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.

LED ZEPPELIN

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.

Mam

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)

tsduser

Wenn das die Zielplatte war, dann waere das auch eine moegliche Erklaerung fuer die "ueberschriebenen" Dateien...

LED ZEPPELIN

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.

LED ZEPPELIN


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.

Mam

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)

LED ZEPPELIN

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.

Mam

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

tsduser

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.

Mam

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.

tsduser

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  :'( :'( :'(


www.cypheros.de