Bitte um Unterstützung: Automatisches Kopieren von CD-Inhalten nach Eingabe des Zielordnernamens

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
chapolote
Junior Member
Junior Member
Posts: 40
Joined: 2009-11-06, 17:49 UTC

Bitte um Unterstützung: Automatisches Kopieren von CD-Inhalten nach Eingabe des Zielordnernamens

Post by *chapolote »

Hallo liebe Leute hier,

nachdem ich mich mein Leben lang in alle möglichen Problemstellungen eingearbeitet habe, sei es javascript, php oder vbs, möchte ich aus Zeitgründen fragen, ob ihr mir bei einem Problem helfen könnt.
Mein 93 jähriger Vater hat, warum auch immer, seine komplette Bildersammlung auf seinem PC verloren. Es gibt zwar ein Backup, welches eine Computerfirma ihm eingerichtet hat, aber die sagen, sie finden dort ebenfalls kein Bildmaterial. Offensichtlich hat er aber noch viele Foto-CD's, die er auf seinen Computer übertragen könnte.
Ich war kürzlich bei meinem Vater, der über 100km entfernt wohnt, und hab ihm den Total Commander installiert. Er kam mit dem Kopieren über den Explorer gar nicht zurecht, und ich hab ihm im Total Commander 2 Buttons eingerichtet, damit er immer sein CD-Laufwerk in einem Fenster findet und im anderen direkt in seinem Bilderordner landet. Hab ihm dann gezeigt und aufgeschrieben, wie er im Bilderordner einen neuen Ordner anlegen kann, in den er dann den Inhalt der Foto CD reinkopieren kann. Ich dachte, somit kann nichts mehr schief gehen. Jetzt hat er mich aber gestern Abend angerufen und mir erzählt, daß er auch damit nicht zurecht kommt.
Jetzt meine Frage und Bitte an Euch:
gäbe es eine Möglichkeit, ein kleines Script zu schreiben, daß er nur noch anklickt, dann kommt eine Abfrage, wie ein neuer Ordner heißen soll, wenn ein Ordner mit gleichem Namen schon existiert, wird die Abfrage wiederholt, der Ordner wird dann automatisch angelegt und automatisch der Inhalt der CD in diesen Ordner kopiert. Mein Vater würde also nur noch die CD einlegen, einen Ordnernamen eingeben und alles andere würde dann automatisch ablaufen. Ich hab keine Ahnung von Batch-Scripten, stecke über beide Ohren in Arbeit, und habe die Hoffnung, daß es hier eine gute Seele gibt, die sagt, nichts leichter als das, ich helfe gerne einem alten Mann, und mir ein kleines Script dafür schreibt? Ich glaube tatsächlich, daß das nichts Großes ist und würde mich liebend gerne damit beschäftigen. Ich säße aber Stunden daran und hier macht das vielleicht jemand in ein paar Minuten.

Ich bin sehr gespannt, ob sich jemand findet und würde mich, auch im Namen meines Vaters, wahnsinnig über Unterstützung freuen.
Danke und Grüße, chapolote
Fla$her
Power Member
Power Member
Posts: 2982
Joined: 2020-01-18, 04:03 UTC

Re: Bitte um Unterstützung

Post by *Fla$her »

Hallo! Es gibt zwei Lösungsmöglichkeiten — eine vollautomatische Lösung (über einen Scheduler) oder die eine Selbstausführung des Skripts erfordert.
Im ersten Fall muss man wissen, welches Merkmale (Label, Name des Root-Verzeichnisses) die Foto-CDs haben, um sie nicht mit anderen zu verwechseln.
Sie müssen auch verstehen, wo der resultierende Ordner geöffnet werden soll — im TC oder Explorer.
Overquoting is evil! 👎
chapolote
Junior Member
Junior Member
Posts: 40
Joined: 2009-11-06, 17:49 UTC

Re: Bitte um Unterstützung

Post by *chapolote »

Hallo Flasher, eine Selbstausführung wäre vollkommen ausreichend. Einfach einen Button oben in der Buttonbar, der das Script ausführt. Dann legt mein Vater die CD ein und betätigt den Button. Die Pfade zum CD-Laufwerk und dem Bilderordner könnte ich dann anpassen
Fla$her
Power Member
Power Member
Posts: 2982
Joined: 2020-01-18, 04:03 UTC

Re: Bitte um Unterstützung

Post by *Fla$her »

Dann ist hier nichts Schwieriges. ->
CopyAllFromCD.vbs

Code: Select all

'———————————————————————————————————————————
' Erstellen eines neuen Ordners und Kopieren
' des Inhalts einer CD, falls vorhanden

Option Explicit: Const TargPath = "D:\Fotos"
'———————————————————————————————————————————
Dim oApp, oFSO, D, Y, DirName, S, R, i, DName, c, Check
Set oApp = CreateObject("Shell.Application")
Set oFSO = CreateObject("Scripting.FileSystemObject")
For Each D In oFSO.Drives
   If D.DriveType = 4 Then
   If D.IsReady Then
      With CreateObject("htmlfile")
        Y = 96/.Parentwindow.Screen.deviceYDpi
        Y = 15*Y*(.Parentwindow.Screen.Height-188*Y)/2
      End With
      DirName = Trim(InputBox(String(5, vbLf) & "Geben Sie einen " &_
      "Ordnernamen ein:", " Kopieren von einer CD", "Neuer_Ordner",, Y))
      If DirName = "" Then WSH.Quit
      S = Split(": ? * "" / | < >")
      R = Array(-230,-225,-246,698,-24,-24,706,707)
      For i = 0 To 7: DirName = Replace(DirName, S(i), ChrW(R(i))): Next
      oApp.Namespace(Left(TargPath, 2)).NewFolder Mid(TargPath, 4)
      DName = DirName
      While oFSO.FolderExists(oFSO.BuildPath(TargPath, DName))
         c = c + 1
         DName = DirName & "_" & c
      Wend
      oApp.Namespace(TargPath).NewFolder DName
      oApp.Namespace(oFSO.BuildPath(TargPath, DName)).CopyHere D.Path & "\*", 5652
      oApp.Open oFSO.BuildPath(TargPath, DName)
      Check = 1
      Exit For
   End If
   End If
Next
If IsEmpty(Check) Then MsgBox "Legen Sie die Foto-CD ein!", 4160
Set oApp = Nothing
Set oFSO = Nothing
Last edited by Fla$her on 2025-01-20, 21:46 UTC, edited 5 times in total.
Overquoting is evil! 👎
chapolote
Junior Member
Junior Member
Posts: 40
Joined: 2009-11-06, 17:49 UTC

Re: Bitte um Unterstützung

Post by *chapolote »

Dankeschön!
Das liest sich ja wie vba. Fast zumindest. Wend kenn ich beispielsweise nicht aus vba als Ende einer While- Schleife.
Lese ich das richtig, daß da keine Nutzerabfrage nach dem neuen Ordnernamen ist? Wenn ja, dann versuche ich mal selber dran….
Fla$her
Power Member
Power Member
Posts: 2982
Joined: 2020-01-18, 04:03 UTC

Re: Bitte um Unterstützung

Post by *Fla$her »

chapolote wrote: 2025-01-18, 20:05 UTC Lese ich das richtig, daß da keine Nutzerabfrage nach dem neuen Ordnernamen ist?
Jetzt gibt es. Der Code wurde aktualisiert.
Overquoting is evil! 👎
chapolote
Junior Member
Junior Member
Posts: 40
Joined: 2009-11-06, 17:49 UTC

Re: Bitte um Unterstützung

Post by *chapolote »

Habe eigentlich gestern schon geantwortet, aber wohl nicht abgeschickt. Deshalb jetzt nochmal 1000 Dank für die Hilfe und Unterstützung. Hab es noch ein bisschen umgebaut, daß das Script erst prüft, ob eine CD eingelegt ist und ansonsten abbricht. Und zum Schluss lass ich noch ein Explorer Fenster öffnen, das direkt den Ordnerinhalt anzeigt. Hätte ich auch mit dem TotalCommander machen können, aber dann wäre mein Papa vielleicht wieder überfordert.
Das einzige, was ich nicht hinbekommen habe, ist, daß wenn er mehrere CD's nacheinander einliest, sich der Ordnerinhalt immer im aktuellen Explorer-Fenster öffnet. Gab da so ein Schalter, ich glaube explorer.exe /e, aber dann öffnet er mir immer meinen Dokumenten-Ordner anstatt dem Bilderordner. Ist aber zu verschmerzen, wenn dann ein neues Explorer Fenster aufgeht.
Also nochmals vielen, vielen Dank.
Fla$her
Power Member
Power Member
Posts: 2982
Joined: 2020-01-18, 04:03 UTC

Re: Bitte um Unterstützung

Post by *Fla$her »

Kein Problem.
chapolote wrote: 2025-01-20, 17:58 UTCHab es noch ein bisschen umgebaut, daß das Script erst prüft, ob eine CD eingelegt ist und ansonsten abbricht.
Worüber reden Sie? Dies wurde bereits durch die IsReady-Prüfung getan.
chapolote wrote: 2025-01-20, 17:58 UTCHätte ich auch mit dem TotalCommander machen können, aber dann wäre mein Papa vielleicht wieder überfordert.
In diesem Fall sehe ich keinen Sinn, sich mit Total Commander in Verbindung zu setzen. Es ist einfacher, die Schaltfläche als Verknüpfung auf dem Desktop zu erstellen.
Sie selbst wollten jedoch nicht auf den letzten Satz antworten
Fla$her wrote: 2025-01-18, 12:16 UTCSie müssen auch verstehen, wo der resultierende Ordner geöffnet werden soll — im TC oder Explorer.
, also ist es nicht meine Schuld. Zeile 32 hinzugefügt.
chapolote wrote: 2025-01-20, 17:58 UTCDas einzige, was ich nicht hinbekommen habe, ist, daß wenn er mehrere CD's nacheinander einliest, sich der Ordnerinhalt immer im aktuellen Explorer-Fenster öffnet. Gab da so ein Schalter, ich glaube explorer.exe /e, aber dann öffnet er mir immer meinen Dokumenten-Ordner anstatt dem Bilderordner. Ist aber zu verschmerzen, wenn dann ein neues Explorer Fenster aufgeht.
Ich habe nicht verstanden, was Sie wollen. Der erste und letzte Satz widersprechen sich.
Overquoting is evil! 👎
chapolote
Junior Member
Junior Member
Posts: 40
Joined: 2009-11-06, 17:49 UTC

Re: Bitte um Unterstützung

Post by *chapolote »

Fla$her wrote: 2025-01-20, 19:09 UTC Worüber reden Sie? Dies wurde bereits durch die IsReady-Prüfung getan.
Das stimmt, nur die Abfrage durch die InputBox kam davor. Jetzt kommt die Abfrage erst, wenn tatsächlich eine CD im Laufwerk ist.
Also so:

Code: Select all

Set oApp = CreateObject("Shell.Application")
Set oFSO = CreateObject("Scripting.FileSystemObject")
For Each D In oFSO.Drives
   If D.DriveType = 4 Then
   If D.IsReady Then
      Check = 1
   End If
   End If
Next
If IsEmpty(Check) Then 
	MsgBox "Legen Sie die Foto-CD ein und starten Sie das Programm neu!", 4160
	WScript.Quit
End If
...
...
Fla$her wrote: 2025-01-20, 19:09 UTC Ich habe nicht verstanden, was Sie wollen. Der erste und letzte Satz widersprechen sich.
ich habe zum Schluß noch folgendes eingefügt:

Code: Select all

ExpPath =TargPath & "\" & DName
Set objShell = CreateObject("WScript.Shell")
objShell.Run "explorer.exe " & ExpPath
Dadurch öffnet sich ein Explorer Fenster, in dem mein Vater gleich den Inhalt des neu angelegten Ordners sieht. Wenn er jetzt eine 2. CD einlegt, und das Script ausführt, dann öffnet sich zum Schluß ein weiteres Explorer Fenster mit dem Inhalt des Ordners, in den die 2. CD kopiert wurde. Ich habe versucht, daß sich kein 2. Explorer-Fenster öffnet, sondern dann der neue Ordner im schon geöffneten Explorer Fenster angezeigt wird, aber das habe ich nicht hinbekommen.
Aber wie schon gesagt, damit kann ich leben.
Fla$her
Power Member
Power Member
Posts: 2982
Joined: 2020-01-18, 04:03 UTC

Re: Bitte um Unterstützung

Post by *Fla$her »

chapolote wrote: 2025-01-20, 21:17 UTC Jetzt kommt die Abfrage erst, wenn tatsächlich eine CD im Laufwerk ist.
Einverstanden. Ich habe diesen Teil in die Bedingung verschoben.
chapolote wrote: 2025-01-20, 21:17 UTC ich habe zum Schluß noch folgendes eingefügt:
Es ist besser, das nicht zu tun. Dafür gibt es bessere Methoden: Open (in meinem Code) und ShellExecute.
chapolote wrote: 2025-01-20, 21:17 UTC aber das habe ich nicht hinbekommen.
Im selben Fenster kann der Ordner nicht geöffnet werden. Stattdessen können Sie alle Explorer-Fenster vor dem Öffnen schließen.
Overquoting is evil! 👎
chapolote
Junior Member
Junior Member
Posts: 40
Joined: 2009-11-06, 17:49 UTC

Re: Bitte um Unterstützung

Post by *chapolote »

Danke für den Hinweis mit dem Explorer und das nochmalige anpassen des Scripts.
Almhirte
Junior Member
Junior Member
Posts: 4
Joined: 2025-01-21, 08:52 UTC

Re: Bitte um Unterstützung

Post by *Almhirte »

Hallo chapolote,

findest du nicht, dass man seinem alten Vater mal schnell ein paar CDs auf den Rechner kopieren kann, als hier die Welt verrückt zu machen?

Wenn dein Vater, in seinem Windows das CD Laufwerk nicht mehr findet, dann schenke ihm eine externe Festplatte, auf die du alle seine Bilder kopierst, und machst am besten eine Kopie davon.

Das ist die Unterstützung, die dein Vater benötigt, und keine bescheuerten Skripte oder Buttons in einer Software, die er gar nicht versteht.

Viele Grüße vom Almhirten
Fla$her
Power Member
Power Member
Posts: 2982
Joined: 2020-01-18, 04:03 UTC

Re: Bitte um Unterstützung

Post by *Fla$her »

2chapolote
Bitte sehr. Möchten Sie also, dass ich dem Code das Vorabschließen aller Explorer-Fenster hinzufüge?
Last edited by Fla$her on 2025-01-21, 15:56 UTC, edited 1 time in total.
Overquoting is evil! 👎
chapolote
Junior Member
Junior Member
Posts: 40
Joined: 2009-11-06, 17:49 UTC

Re: Bitte um Unterstützung

Post by *chapolote »

Almhirte wrote: 2025-01-21, 09:00 UTC Hallo chapolote,

findest du nicht, dass man seinem alten Vater mal schnell ein paar CDs auf den Rechner kopieren kann, als hier die Welt verrückt zu machen?

Wenn dein Vater, in seinem Windows das CD Laufwerk nicht mehr findet, dann schenke ihm eine externe Festplatte, auf die du alle seine Bilder kopierst, und machst am besten eine Kopie davon.

Das ist die Unterstützung, die dein Vater benötigt, und keine bescheuerten Skripte oder Buttons in einer Software, die er gar nicht versteht.

Viele Grüße vom Almhirten
Wie gut, Almhirte, daß Du die Gegebenheiten kennst bei uns, das Ausmaß seiner CD-Sammlung, die Entfernung zu ihm usw.
Danke für Deine überaus anmaßende Belehrung.
Es zwingt Dich doch keiner, hier mitzulesen, wenn es Dich denn verrückt macht.
chapolote
Junior Member
Junior Member
Posts: 40
Joined: 2009-11-06, 17:49 UTC

Re: Bitte um Unterstützung

Post by *chapolote »

Fla$her wrote: 2025-01-21, 09:34 UTC Bitte sehr. Möchten Sie also, dass ich dem Code das Vorabschließen aller Explorer-Fenster hinzufüge?
Nein Danke, das ist nicht nötig.
Post Reply