Batch Datei auf USB Stick: verschieben?
Hi,
ich möchte mit einer Batch (auf USB-Stick) eine Datei von Ordner A nach Ordner B verschieben. Jetzt ist aktuell der Pfad F:\test.txt diese soll in F:\test\test.txt verschoben werden. Soweit kein Problem. Wenn ich die Datei jetzt aber an einem anderen Rechner starten möchte ist ja nicht gesagt dass es F ist oder? Gibt es da eine Lösung, dass es auf jeden Rechner funktioneiert?
5 Antworten
Es gibt eine spezielle Variable, in der das LW steht, von dem aus die Batch gestartet wurde. Die Variable %0 enthält den Batchnamen, und %~d0 expandiert zum LW-Namen, %~dp0 entsprechend zu LW+Pfad. Siehe z.B.
https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx
Testbatch auf c:\xx\xx ausgeführt -> %~d0 ist c: ... Testbatch auf USB g:\ ausgeführt -> %~d0 ist g:
Ja, da gibt es eine Lösung.
Wenn du den USB-Stick einsteckst, gehst du auf "Computer", da wird er dir als Laufwerk angezeigt. Auch der Laufwerksbuchstabe, den er gerade hat.
Folglich kannst du an jedem PC auf den USB-Stick zugreifen, Dateien verschieben, kopieren etc. etc.
Ich hoffe, ich konnte dir helfen :-)
Nein, eigentlich nicht. F ist ja nur der Laufwerkbuchstabe, der an DEINEM Rechner angezeigt wird. Bei einem anderen PC könnte es dann sein, dass es als: "L:\test.txt" angezeigt wird. Probier es doch einfach mal aus, bevor du die Batch änderst.
Aber ich bin mir eigentllich ziemlich sicher, dass du die Batch nicht umschreiben musst. --- Austesten macht aber den größten Sinn!
1. Lösung:
Benutze statt F:\test.txt einen relativen Pfad (Die Batch Datei muss auf deinem USB Stick auf oberster Ebene/im obersten Ordner liegen)
copy "test.txt" "test\test.txt"
2. Lösung
Finde den Laufwerksbuchstaben anhand des Pfades deiner Batch-Datei heraus (Pfad der Batch ist immer in %0 gespeichert)
set "L=%~d0" copy "%L%\test.txt" "%L%\test\test.txt"
~Tim
Wir machen so etwas (wenn es wirklich einen Laufwerksbuchstaben in einem Kommando braucht) mit einer Abfrage:
If exist a:\xxx.xxx goto aa
If exist b:\xxx.xxx goto bb
:aa
copy . a:\xxx.xxx a:\yyy\
goto end
:bb
copy . b:\xxx.xxx b:\yyy\
:end
exit
Müssen die Dateien umbedingt auf F sein? C besitzen die meisten pc's, probiers doch einfach mit C. Wenn du aber nur dateien innerhalb des sticks verschieben willst kannst du für batches das root verzeichnis aus dem sie gestarted worden nehmen, guck dir dazu ein paar antworten auf stackoverflow an ich hab das nichtmehr so genau im kopf wie die bezeichnungen sind. :)
Dann müsste ich ja aber jedes mal das F umschreiben in der Batch oder? Diese Lösung wäre dann nicht so schön.