Batch Datei automatisiert befüllen?

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

« vorheriges - nächstes »

tsduser

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.

LED ZEPPELIN

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>

LED ZEPPELIN

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>

LED ZEPPELIN

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.

tsduser

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.

tsduser

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.

Mam

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)

tsduser

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

LED ZEPPELIN

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.

LED ZEPPELIN

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.

tsduser

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.

LED ZEPPELIN

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>

LED ZEPPELIN

Änderung des Dateisystems funktioniert leider nicht.
Kriege immer irgendwelche Fehlermeldungen.
Lasse ich lieber bevor ich wieder einen riesigen Datenverlust produziere.

Mam

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ß !!!)


tsduser

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


www.cypheros.de