cimbala
Goto Top

CD- ROM laufwerk in BatchDatei

Hallo,

ich habe eine Batchdatei, die mir von CD ein paar Dateien auf die Festplatte kopiert...
im Moment hab ich da einfach "Copy D:\test.exe C:\test.exe" stehen.
wenn das CD-ROM Laufwerk aber garnicht D: ist, funktioniert die Datei nicht - logisch !
gibt es irgendwie nen Platzhalter oder sowas den ich für das Laufwerk verwenden kann?
Danke für eure Antwort/en !

Content-Key: 18428

Url: https://administrator.de/contentid/18428

Printed on: April 19, 2024 at 03:04 o'clock

Member: linkit
linkit Oct 25, 2005 at 16:44:04 (UTC)
Goto Top
Du kannst für den kompletten Pfad oder für den Laufwerksbuchstaben allein einen Platzhalter lassen. BSP:

x.bat

copy %1:\test.exe c:\test.exe


nach dem Aufruf x.bat e wird folgendes ausgeführt: copy e:\test.exe c:\test.exe

das geht natürlich auch komplett und mit mehreren:

x.bat

copy %1:\%2.exe c:\%2.exe


nach dem Aufruf von x.bat e datei führt er aus: copy e:\datei.exe c:\datei.exe
Member: cimbala
cimbala Oct 25, 2005 at 17:50:20 (UTC)
Goto Top
und wie gebe ich dem Platzhalter den Laufwerksbuchstaben ?
Member: nullplan001
nullplan001 Nov 15, 2005 at 17:47:12 (UTC)
Goto Top
Mit Sachan á la <tt>x.bat d whatsoever</tt> würde beim zweiten Beispiel die Datei whatsoever.exe von D: nach C: kopiert werden. Am einfachsten wäre jedoch, irgendwie von der Kommandozeile aus das Dateisystem des aktiven Laufwerks rauszukratzen. Dann mit <tt>find "CDFS"</tt> (in einer Pipe) nach CD-Laufwerk überprüfen. Ich habe nur noch kein Statement gefunden, dass von einem beliebigen Laufwerk aus das Dateisystem anzeigt. format.com weigert sich vehemment CD-Laufwerke zu formatieren... *Geistesblitz* wie wäre es mit einer Sache wie
for %%i in (a: b: c: d: e: f: g: h: i: j: k: l: m: n:) do (
  for /f %%a in ('echo.^|format %%i') do (  
  if /i %%b==CD-Rom-Laufwerk (
    copy %%i\MyFile.myext C:\ 
    exit /b 0
  )
)
Du kannst dir natürlich die Arbeit machen, alle Buchstaben von a bis z in die äußere Schleife einzutragen. Einen Nachteil hat die ganze Apparatur aber, den ich nicht verschweigen will: Sollte das CD-Laufwerk mit einem NTFS-Pfad verknüpft sein, bekommst du es so nicht raus. Aber das ist dann deiner Phantasie überlassen.
Member: Biber
Biber Nov 15, 2005 at 19:52:07 (UTC)
Goto Top
Guten Abend,
@nullplan001
...Du machst aber ganz schön brutale Sachen... erstmal alle Laufwerke formatieren, und dasjenige, dass nicht formatiert werden kann, hat ein anderes FileSystem, ist also das CD-Laufwerk?? Und auf allen anderen Laufwerken hast Du erstmal einen übersichtlichen Zustand?? *luftschnapp* face-wink

@cimbala
Falls Du nullplan001s Idee noch nicht durchgezogen und noch nicht alles platt ist auf Deinen Laufwerken, dann hätte ich noch eine Alternativlösung.
Ist aber ein noch längerer Batch als der von nullplan. Egal, Copy & Paste..
::-------snipp BatCd.bat 
@echo off & setlocal
Set "vbssnippet=%temp%\%random%.vbs"  
 >%vbssnippet% echo Set WSHShell = WScript.CreateObject("WScript.Shell")  
>>%vbssnippet% echo For Each d in CreateObject("Scripting.FileSystemObject").Drives  
>>%vbssnippet% echo if d.Drivetype=4 then wScript.Echo d.Driveletter
>>%vbssnippet% echo Next 
For /F %%i in ('cscript //nologo %vbssnippet%') Do set "cdrom=%%i"  
del %vbssnippet%
if [%CDROM%]== (ECHO Kein CDROM gefunden!) else Echo CDROM ist %CDROM%:
:: -----snapp BatCd.bat
Output bei mir:
>e:batcd
CDROM ist R:
...was auch stimmt.

Dort, wo jetzt "Echo CDROM ist %CDROM%:" steht, dort kannst Du statt dessen ein
"Copy %CDROM%:\test.exe C:\test.exe" ..hinschreiben.

Thats it. Was macht ihr denn da für ein Theater drum?
HTH Biber
---
P.S. Ich bin jetzt davon ausgegangen, dass EIN CDRom-Laufwerk da ist.
Genau genommen werden aber alle CD-Laufwerke gefunden und zurückgegeben und ich schreibe auf das letzte gefundene. Ist ja bei einem CD-Laufwerk egal. face-wink
Wer mehrere hat und das erste meint.
ERSETZE: FOR ....Do set "cdrom=%%i"
DURCH: : FOR .... Do if [%cdrom%]== set "cdrom=%%i"
--
P.P.S.
Habe grad gesehen, dass dieser Beitrag unter Installationsprogramme erstellt ist...
Also, wenn es um DEINE CD geht, von der Du die Daten auf anderer Leute Rechner kopieren willst - dann gib Deiner CD einen eindeutigen Datenträgernamen oder schreibe eine Datei "cimbala.001" auf die CD. Und das Laufwerk, auf dem im Root "cimbala.001" existiert, ist das CD-Laufwerk.
Diese Mimik machen auch ganz große Firmen.
Member: nullplan001
nullplan001 Nov 16, 2005 at 16:00:18 (UTC)
Goto Top
@Biber: Nein, so radikal bin ich nun auch wieder nicht.
Die Zeile echo.|format %%i bewirkt lediglich eine Ausgabe wie:
 Der Dateityp des Datenträgers ist {NTFS|FAT}.
Ein CD-Rom-Laufwerk kann nicht formatiert werden.
Das angegebene Laufwerk wurde nicht gefunden 
Die 3 Meldungen stehen bei Win2k zur Auswahl. Durch das <tt>echo.</tt> wird das Programm sofort abgebrochen, ohne dass auch nur ein Bit formatiert wurde. Du musst mich doch echt für verrückt halten, öffentlich eine Batch-Möglichkeit zur Formatierung aller Festplatten in Reichweite zu posten. Spätestens übermorgen käme dann der neue gefährliche Wurm nullplans_idee.A raus und alles, was eins und eins zusammenzählen kann, flamet mich in Grund und Boden. Nee, nee, 'n bischen bescheuert sind wir ja alle, aber ganz blöd bin ich noch nicht.
Member: Biber
Biber Nov 16, 2005 at 17:59:20 (UTC)
Goto Top
So, so, Markus,
dann lernen wir jetzt beide was, wie es auch in diesem Forum sein soll:

Bei mir (Win XP Prof) kommt heraus:

echo.|format r: (CDRom-Laufwerk)
Der Typ des Dateisystems ist RAW.
Geben Sie mit der Option /FS das Dateisystem an,
das Sie für dieses Volume verwenden möchten.

echo.|format c:
Der Typ des Dateisystems ist NTFS.
Geben Sie die aktuelle Volumebezeichnung für Laufwerk C: ein: Es wurde eine unzulässige Volumebezeichnung für dieses Laufwerk angegeben.

echo.|format e: (USB-Stick)
Legen Sie eine neue Diskette in Laufwerk E: ein,
und drücken Sie die EINGABETASTE. Der Typ des Dateisystems ist FAT.
Überprüfung von 249 MB

FORMAT kann nicht ausgeführt werden, da das Volume von einem anderen
Prozess verwendet wird. Die Bereitstellung des Volumes muss zuerst
aufgehoben werden.
ALLE OFFENEN BEZÜGE AUF DIESEM VOLUME SIND DANN UNGÜLTIG.
Möchten Sie die Bereitstellung des Volumes aufheben? (J/N)
FORMAT kann nicht ausgeführt werden, da das Volume von einem anderen
Prozess verwendet wird. Die Bereitstellung des Volumes muss zuerst
aufgehoben werden.
ALLE OFFENEN BEZÜGE AUF DIESEM VOLUME SIND DANN UNGÜLTIG.
Möchten Sie die Bereitstellung des Volumes aufheben? (J/N) Das Laufwerk kann nicht gesperrt werden.
Das Volume wird verwendet.
~~~
~~~
Verständnis für meine Skepsis?
Somit denke ich, dass Deine Prüfung eventuell bei mir nicht funktionieren würde.
Aber für verrückt halte ich doch nicht deswegen - so sollte es nicht rüberkommen.
Und wenn cimbala W2k hat, hat er/sie ja vielleicht Deinen Lösungsweg schon gestern mit Erfolg ausprobiert.

**gg ... aber die Vorstellung, demnächst "nullplans_idee.A" im HiJackThis.Logfile oder bei Symantec lesen zu können, finde ich auch scharf... *lacht*

Schönen Abend Dir
Biber
Member: NoobLike
NoobLike Nov 29, 2005 at 13:43:36 (UTC)
Goto Top
Jedes Laufwerk, bekommt bei der Installation einen bestimmten Buchstaben zugeordnet.
Was heisst, du musst eben Pro Computer 1 Mal die Batchdatei ändern, dürfte aber nicht so schwer sein.
Wenn du 2 Laufwerke hast, dann machst du eben n übergang zb:
Copy D:\test.exe C:\test.exe"
Copy E:\test.exe C:\test.exe

Wobei ich aber nicht versthe dass du einen Pfad von der CD angibst, da der ja bei jeder CD anders ist ?
Ich verstehe aber auch nicht warum bei dir C:\test.EXE (EXE) heisst, da du ja Dateien kopieren willst und keine Programme etc. ?

Mach es am besten so :
Copy D:\ C:\ORDNERNAME
Cppy E:\ C:\SELBERNAME

Dann hast du sicher keine Probleme mehr !!
Member: Biber
Biber Jan 14, 2006 at 17:07:21 (UTC)
Goto Top
Moin VCa,

Du musst in der batch-datei folgendes eingeben:
copy test.exe c:\

das genügt schon. mfg VCa

Da wird cimbala aber stinkesauer auf uns andere sein, dass wir ihn/sie 3 Monate lang mit überflüssigen Tipps zugeschwallt haben...

Was bringt Dich zu der Annahme, dass diese Zeile das CDROM-Laufwerk als Quellverzeichnis zum Kopieren benutzt?

Ein doch sehr staunender
Biber
Member: scriptkiddy
scriptkiddy May 10, 2006 at 18:24:06 (UTC)
Goto Top
Hi Biber und ihr anderen,
Also ich hab das jetzt ma in ne batch geschrieben also mal nur
::-------snipp BatCd.bat 
@echo off & setlocal
Set "vbssnippet=%temp%\%random%.vbs"  
>%vbssnippet% echo Set WSHShell = WScript.CreateObject("WScript.Shell")  

For /F %%i in ('cscript //nologo %vbssnippet%') Do set "cdrom=%%i"  
del %vbssnippet%
if [%CDROM%]== (ECHO Kein CDROM gefunden!) else Echo CDROM ist %CDROM%:
:: -----snapp BatCd.bat 
WEnn ich diese nun ausführe dann kommt bei mir nur Kein CDROM gefunden nur woran liegt das nun ?
Member: Biber
Biber May 10, 2006 at 20:11:01 (UTC)
Goto Top
Moin scriptkiddy,

lag daran, dass das meiste vom Code gar nicht angezeigt wurde-das war noch mit den "alten" Formatierungsoptionen formatiert.. und nach deren Regeln wurde nicht alles erkannt. Bzw. einfach verschluckt.

Probier es jetzt nochmal mit Copy & Paste.

Grüße
Biber
Member: nullplan001
nullplan001 May 11, 2006 at 13:59:10 (UTC)
Goto Top
Hmm... stimmt eigentlich. Solange man nichts auf die CD kopieren will, ist man auf der sicheren Seite, wenn man im Installscript die Laufwerksangaben einfach rauslässt. Da sich da Script auf der CD befindet, wird das automatisch als Quelllaufwerk angenommen.
Tschö,
nullplan
P.S.: draufkopieren geht natürlich auch: copy C:\will.ich.haben. Ist aber sinnlos, weil kopieren auf CD kann man gleich bleiben lassen.