tankwart
Goto Top

In BAT Datei bei Pfad Laufwerksname statt Laufwerksbuchstaben angeben?

Ich würde gerne per BAT Datei einen Ordner auf einer Externen Festplatte erstellen. Im Pfad soll aber der Laufwerksname statt dem Buchstaben verwendet werden.

Hallo zusammen,
Ich würde gerne per BAT Datei einen Ordner auf einer Externen Festplatte erstellen. Im Pfad soll aber der Laufwerksname statt dem Buchstaben stehen.

Problem ist halt, das der Buchstabe nicht immer gleich ist.

Also statt:
md N:\%date%

Irgendwie so:
md eindeutiger_lauwerksname:\%date%

Ist es generell möglich einen Laufwerksnamen zu übergeben??
Wie frage ich am besten ab ob das Laufwerk vorhanden ist?

Ich danke schon mal wieder im Voraus


Gruß

TankWart

Content-Key: 58777

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

Printed on: April 26, 2024 at 22:04 o'clock

Member: miniversum
miniversum May 11, 2007 at 10:29:36 (UTC)
Goto Top
Du könntest mit einer Forschleife alle Laufwerksbuchstaben von A bis Z duchprüfen wie deren Datenträgerbezeichnung ist.
Die Datenträgerbezeichnung erhällst du indem du in einer anderen Forschleife die erste Zeile einer Dir Anweisung auf den jeweiligen Laufwerksbuschstaben durchschaust und das 6. token mit der gewünschten Datenträgerbezeichnung vergleichst.

Nur als grober Ablauf gedacht.

miniversum
Member: Lord-Helmi
Lord-Helmi May 11, 2007 at 10:40:31 (UTC)
Goto Top
Hallo,

oder du sorgst dafür, dass dein Laufwerk immer den selben Laufwerksbuchstabe bekommt. Ein kleines Tool hierfür: http://www.uwe-sieber.de/usbdlm.html

Gruß
Michael
Member: TankWart
TankWart May 11, 2007 at 11:30:48 (UTC)
Goto Top
erst mal danke für die schnellen Antworten.

Miniversum, hast du irgendwo eine Seite parat, wo ein Beispiel mit der Forschleife darin vorkommt??
Ich bin in Batch ein absoluter Anfänger, möchte mich ja auch garnicht so tief darin einarbeiten.

Brauche das ganze halt für einen Kunden.

Das Tool wär schon nicht schlecht, aber wie ist dass, wenn ich die Platte an einem anderen PC anschließe??
Müsste ich das Prog. auf jeden Rechner ausführen, wo ich die Platte so benutzen möchte um immmer den gleichen Buchstaben zu erhalten?

Und wie ist das mit Win98?
Auf der Website steht ja das es eigentlich nur mit Win XP und höher richtig läuft.


Ich danke schon mal wieder im Voraus

Gruß

TankWart
Member: miniversum
miniversum May 11, 2007 at 12:11:19 (UTC)
Goto Top
achso das soll auch auf win98 laufen? dann wirds schwierig mit batch. ab 2000 würds da besser gehen.

Könnte dir eine Batch zusammenbasteln. Aber die läuft auf 98 danahlt nicht.

miniversum
Member: TankWart
TankWart May 11, 2007 at 12:15:43 (UTC)
Goto Top
für das erste würde auch Win XP reichen, bräuchte es evtl. halt mal wieder auch auf einem Win98 Rechner.

Hättest du da ein Beispiel für mich?
Wär echt super.

Danke schon mal wieder im Voraus.

Gruß

TankWart
Member: miniversum
miniversum May 11, 2007 at 13:44:17 (UTC)
Goto Top
Versuchs mal damit:
@echo off & setlocal enabledelayedexpansion
set "name=Laufwerksbezeichnung"  

for %%L in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
dir %%L:>NUL 2>NUL && (
set "label="  
FOR /F "tokens=6 delims= " %%N in ('dir %%L:') do if not defined label set "label=%%N"  
if !label! equ %name% (
set Lw=%%L
)
)
)

ECHO md %Lw%:\%date%
In der zweiten Zeile mußt du halt die Laufwerksbezeichnung anpassen. Das Laufwerk steht dann in der Variabeln %Lw%. Gibt es mehrere Laufwerke mit der gleichen bezeichnung wird das Laufwerk mit dem Buchstaben verwendet der im Alphabet am weitesten hinten ist.
Unten steht dein Befehl ECHO md %Lw%:\%date% dann noch mit ECHO drin das du siehst das es so gehen sollte. Das ECHO kannst du ja dan entfernen wenn es so geht wie du willst.

miniversum
Member: Biber
Biber May 11, 2007 at 16:35:12 (UTC)
Goto Top
Moin TankWart,

wie miniversum schon angedeutet hat... unter Win9X wird es umständlicher.
Unter Win2k und höher geht es mit einem Einzeiler.

Unter Nicht-Win9x: bau diese angepasste FOR-Zeile in den Batch mit ein:

::dein KopierBatch.bat
@echo off
....

for %%i in (C D E F G X Y Z) do if exist %%i: dir %%i:xx 2>nul|find /i "datenträger"|find "System XP"|find /i "%%i:">nul && Set DasLaufwerk=%i:  

REM Falls ermitelbar, ist hier %dasLaufwerk% gefunden

Erläuterung:
In diesem Beispiel werden die willkürlich angenommen Laufwerksbuchstaben C D E F G X Y Z geprüft (nicht alle existieren) und überprüft, welches davon "System XP" heißt.
Das ist bei mir auf Laufwerk C: der Fall, heraus kommt also "Set DasLaufwerk=C:"
Unter der Variable %DasLaufwerk% kannst Du also C: ansprechen

Test zum Copy & Paste am CMD-Prompt:

>for %i in (C D E F G X Y Z) do @if exist %i: dir %i:xx 2>nul|find /i "datenträger"|find "System XP"  
|find /i "%i:">nul && @echo Set DasLaufwerk=%i:  
Set DasLaufwerk=C:

Unter Win9x müsstest Du leider auf das "&&"-Zeichen verzichten und daher das Ganze in Einzelzeilen auseinanderziehen:

::dein W9xKopierBatch.bat
@echo off
....

if exist C: dir C::xx 2>nul|find /i "datenträger"|find "System XP"|find /i "C:">nul   
IF not errorlevel 1 set Daslaufwerk=C:
IF not errorlevel 1 goto :LwFound

if exist D: dir D::xx 2>nul|find /i "datenträger"|find "System XP"|find /i "D:">nul   
IF not errorlevel 1 set DasLaufwerk=D:
IF not errorlevel 1 goto :LwFound
....
...
:LwFound
....
REM hier ist %DasLaufwerk% ermittelt, falls es zu finden ist

....
[ungetestete Skizzen]

Gruss
Biber
Member: TankWart
TankWart May 20, 2007 at 08:23:31 (UTC)
Goto Top
wow,
danke für die Antworten, war im Urlaub und werde sie morgen gleich mal testen.

Gruß
TankWart
Member: yakazaa
yakazaa Oct 21, 2011 at 11:22:17 (UTC)
Goto Top
Hi zusammen,
ich suche derzeit ein gleiches Skript und war froh dieses gefunden zu haben.

Leider klappt das bei mir nicht so recht:

Ich suche z.B. nach der Bezeichnung DATA (Es gibt nur eine Partition die bei mir so heißt, das Wort DATA kommt auch in keiner anderen Bezeichnung vor), liegt auf dem Buchstaben D:
Das Skript gibt mir aber "j_:\ " aus.

1.) Wieso j statt d ?
2.) Wieso das Leerzeichen hinter dem Buchstaben ?

Grüße aus Dortmund,
Dominik

EDIT:
Fehler 1 gefunden:
Das Laufwerk J: ist bei mir ein Netzlaufwerk welches auf \\Computer-1\DATA gemappt ist.
Obwohl ich es im Arbeitsplatz umbenannt hatte, heißt die Freigabe natürlich immernoch DATA face-smile

Aber wie steht es um Fehler 2 ?
Member: Biber
Biber Oct 21, 2011 at 18:00:10 (UTC)
Goto Top
Moin yakazaa,

Zitat von @yakazaa:
Hi zusammen,
1.) Wieso j statt d ?
2.) Wieso das Leerzeichen hinter dem Buchstaben ?

Grüße aus Dortmund,
Dominik

EDIT:
Fehler 1 gefunden:
Das Laufwerk J: ist bei mir ein Netzlaufwerk welches auf \\Computer-1\DATA gemappt ist.
Obwohl ich es im Arbeitsplatz umbenannt hatte, heißt die Freigabe natürlich immernoch DATA face-smile

Aber wie steht es um Fehler 2 ?

Fehler 2 ist erklärlich, wenn versehentlich ein Leerzeichen (SPACE) am Ende von miniversums Zeile 09 steht.
REM STREICHE die alte Zeile 09
set Lw=%%L 
REM SETZE als neue Zeile 09
set "Lw=%%L"   

Grüße und schönes Wochenende
Biber