CD-Batch-O-Mat

cmd.pngDie DvDs mit den ersten Filme meiner Tochter, Audio-CDs mit meinen Lieblings-MODs und Daten CDs mit Fotos kommen langsam in ein fortgeschrittenes Alter.

Zeit zu prüfen, ob alles noch lesbar ist und falls nicht, zu hoffen, dass die Backup Disk der Backup Disk noch funktioniert. 🙂

Aber all das ist leichter gesagt als getan.

Zunächst wollte ich die Film-DvDs nur kopieren und so für die nächsten fünf Jahre absichern.

Ich habe einen Brenner, der mit 16-Facher Geschwindigkeit brennen könnte. Bei mit darf er das aber nicht. Er wird künstlich auf 12-Fach begrenzt, um die Rohlinge nicht gleich zu versauen.

Bei meinem Nero 6.3 OEM stellte ich fest, dass man die maximale Brenngeschwindigkeit immer nur dann setzen kann, wenn ein Rohling eingelegt ist.

Die alten Rohlinge der Filme sind „nur“ mit 4-Facher Geschwindigkeit beschreibbar.

Deshalb kann man vor dem Kopieren nur „maximal“ (==Das will ich nicht) oder nicht mehr als 4-fach anwählen. 👿 Also fiel Nero aus…

Dann kam eine lange Zeit des vergeblichen Suchens nach einem fertigen, für meine Zwecke dienlichen Werkzeug.

Die meisten Tools sind für das Eindampfen zu großer DvDs oder zum konvertieren in DIVx & Co gebaut. Die bauen die Menüstruktur um, transkodieren die Filme und was weiß ich nicht noch alles. Man muss ziemlich viel rum Klicken und nichts läuft einfach so.

In der Zeit des Suchens hätte ich dreimal Nero nehmen können und wäre fertig! 🙁

Nun ja. Einfach kann jeder!

Aus meiner Zeit bei XSS/SoftThinks hatte ich noch alte Versionen der cdrtools.

Die sind zwar für Windumms Benutzer etwas umständlichungewohnt“ zu bedienen, können aber eine Menge.

Die neuen cdrtools brennen jetzt auch „CD-R“ Rohlinge. 🙂

Also habe ich mir dafür ein paar „kleine“ Batch-Dateien geschrieben die meine alten CDs auf Lesbarkeit prüfen und meine Kind-Filme kopieren.

Die reinen Batch-Scripte sind hier.

Ein Zip mit allen benötigten Dateien (Binär- und Batch-Dateien) habe ich hier hin geladen.

Folgende Scripte sind in den Archiven:

CDCopyLoop.cmd CDs/DvDs kopieren:

  • Fordert zum Einlegen einer Original-Disk auf,
  • liest diese dann in das TEMP-Verzeichnist ein
  • wirft die Disk aus
  • fordert zum Einlegen eines Rohlings auf,
  • brennt das TEMP-Image
  • löscht das TEMP-Image und
  • wirft die Disk aus.
  • fängt wieder von vorne an

Die maximale Brenngeschwindigkeit kann getrennt für CDs und DvDs angegeben werden.

CDCheckLoop.cmd CDs/DvDs auf Lesbarkeit prüfen:

  • Fordert zum Einlegen einer Original-Disk auf,
  • liest diese dann in den Speicher ein
  • wirft die Disk aus und
  • fängt wieder von vorne an

CDs werden mit aktivierter C2-Fehlerprüfung gelesen.

CDReadLoop.cmd CDs/DvDs als ISO auf die Festplatte speichern:

  • Fordert zum Einlegen einer Original-Disk auf,
  • liest die Volume-Id der CD und benutzt diese als Dateinamen,
  • liest das Medium nach „<Volume-Id>.iso“ ein,
  • wirft die Disk aus und
  • fängt wieder von vorne an
BurnAllISO.cmd Alle ISOs aus einem Verzeichnis auf CD/DvD brennen:

  • Fordert zum Einlegen eines Rohlings auf,
  • brennt ein ISO-Image auf das Medium,
  • wirft die Disk aus

Die maximale Brenngeschwindigkeit kann getrennt für CDs und DvDs angegeben werden.

In jeder Datei muss man oben die Variable CDR_DEVICE auf sein System anpassen:

„cdrecord -scanbus“ gibt eine Liste aus. In der steht bei mir u.A.

scsibus1:
        1,0,0   100) 'TSSTcorp' 'CD/DVDW SH-S182D' 'SB06' Removable CD-ROM
        1,1,0   101) *
        1,2,0   102) *
        1,3,0   103) *
        1,4,0   104) *
        1,5,0   105) *
        1,6,0   106) *
        1,7,0   107) HOST ADAPTOR

Das bedeutet, das mein „CDR_DEVICE=1,0,0“ ist.

In den cmd-Dateien, die Medien schreiben, kann man mit CD_SPEED und DVD_SPEED die maximale Brenngeschwindigkeit setzen. Wenn das Medium nur weniger unterstützt, limitiert cdrecord das selbst.

Die Batch-Akrobatik hat mir mal wieder ganz gut getan. 🙂

Mir fiel beim Schreiben auf, dass man mit der Windows Command Shell „cmd.exe“ Dinge machen kann, die ich sonst nur in Linux kannte. [Ein elender kleiner Krepel bleibt cmd trotzdem!]

Ein Ding hat mich besonders genervt. Das Script:

@echo off
for %%? in (hallo du da) do (
  SET TN=%%?
  echo %TN%
)
echo %TN%

gibt aus:

ECHO ist ausgeschaltet (OFF).
ECHO ist ausgeschaltet (OFF).
ECHO ist ausgeschaltet (OFF).
da

Die Variable „TN“ wird also nicht während der for-Schleife gesetzt, hat aber zuletzt den richtigen Wert.

Was sich Microsoft dabei gedacht hat, bleibt mir verborgen! 🙄

Ich habe einige Zeit gebraucht, um herauszufinden, dass das funktioniert, wenn man statt der Prozentzeichen Ausrufezeichen benutzt:

@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
for %%? in (hallo du da) do (
SET TN=%%?
echo !TN!
)

Gibt aus:

hallo
du
da

So, wie es sein soll. 😕 …nur mit Ausrufezeichen.

Na, ja… bash bleibt bash. 😉

Einen Kommentar schreiben

Time limit is exhausted. Please reload the CAPTCHA.