Mit SET unterschiedliche Laufwerke einer Variablen zuweisen
Hallo,
ich habe noch eine Frage zu folgendem schon besprochenen Problem. Ich würde gerne einer Variablen unterschiedliche Laufwerksbuchstaben zuweisen. Mein Code sieht wie folgt aus:
nun müsste ich aber mehrere Laufwerke dieser einen Variablen zuweisen. Also:
Leider funktioniert das ja so nicht. Gibt es einen Möglichkeit genau einer Variablen mehrere Laufwerke zuzuweisen?
Noch eine Zusatzfrage. Wie kann ich allen SD Karte immer ein festes Laufwerk zuweisen? (WIN XP)
Vielen Dank für Tips und Hilfen lieben Gruß
Peter
ich habe noch eine Frage zu folgendem schon besprochenen Problem. Ich würde gerne einer Variablen unterschiedliche Laufwerksbuchstaben zuweisen. Mein Code sieht wie folgt aus:
SET "Laufwerk1=F:\*.JPG"
DIR /s /b /a-d "%Laufwerk1%">NUL 2>&1 && GOTO :PROGRAMM
...
SET "Laufwerk1=F:\*.JPG"
SET "Laufwerk1=E:\*.JPG"
SET "Laufwerk1=G:\*.JPG"
DIR /s /b /a-d "%Laufwerk1%">NUL 2>&1 && GOTO :PROGRAMM
...
Noch eine Zusatzfrage. Wie kann ich allen SD Karte immer ein festes Laufwerk zuweisen? (WIN XP)
Vielen Dank für Tips und Hilfen lieben Gruß
Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 143904
Url: https://administrator.de/forum/mit-set-unterschiedliche-laufwerke-einer-variablen-zuweisen-143904.html
Ausgedruckt am: 23.12.2024 um 13:12 Uhr
16 Kommentare
Neuester Kommentar
Hallo peterpan33!
Die Variable, die sich hier anbietet, wäre die Schleifenvariable einer "
Grüße
bastla
Die Variable, die sich hier anbietet, wäre die Schleifenvariable einer "
for
""-Schleife, also etwa:@echo off & setlocal
for %%i in (F E G) do (
dir /s /b /a-d "%%i:\*.jpg">nul 2>&1 && call :Programm "%%i"
)
:: was danach noch so anliegt
goto :eof
:Programm
echo Unterprogramm wurde aufgerufen für Laufwerk %1
:: was hier zu tun ist
goto :eof
bastla
Moin peterpan33,
hmmm, ich interpretiere den Hintergrund deiner Frage ein bissle anders bastla und denke, du willst auf unterschiedlichen Rechnern immer den gleichen Laufwerksbuchstaben für deinen Stick/deine SD vorgeben.
In diesem Fall musst du natürlich nicht (und genau genommen solltest du es auch nicht) jeweils mit einer FOR-Anweisung über 3 mögliche Laufwerksbuchstaben humpeln.
Also. sollte das Abarbeiten ALLER Lw-Buchstaben F, E, G mit dem DIR-befehl gemeint sein und die Gleichbehandlung aller *jpg-Dateien 8egal ob auf E oder F oder G gefunden:
--> dann einfach direkt in den DIR-Befehl als Parameter übergeben (CMD-Promp-Beispiel:]
Für die "feste Vergabe eines Laufwerksbuchstabens" genau diesen Suchbegriff in unsere Forumssuchfunktion eintippseln.
Oder "Uwe Sieber" in eine Suchmaschine.
Grüße
Biber
hmmm, ich interpretiere den Hintergrund deiner Frage ein bissle anders bastla und denke, du willst auf unterschiedlichen Rechnern immer den gleichen Laufwerksbuchstaben für deinen Stick/deine SD vorgeben.
In diesem Fall musst du natürlich nicht (und genau genommen solltest du es auch nicht) jeweils mit einer FOR-Anweisung über 3 mögliche Laufwerksbuchstaben humpeln.
Also. sollte das Abarbeiten ALLER Lw-Buchstaben F, E, G mit dem DIR-befehl gemeint sein und die Gleichbehandlung aller *jpg-Dateien 8egal ob auf E oder F oder G gefunden:
--> dann einfach direkt in den DIR-Befehl als Parameter übergeben (CMD-Promp-Beispiel:]
FOR /F "delims=" %i in ('dir /s /b /a-d "E:\*.jpg F:\*.JPG G:\*jpg" ) do WasImmerZuTunIst "%i"
Für die "feste Vergabe eines Laufwerksbuchstabens" genau diesen Suchbegriff in unsere Forumssuchfunktion eintippseln.
Oder "Uwe Sieber" in eine Suchmaschine.
Grüße
Biber
Hallo peterpan33!
Wenn es nur ein simples "
... ansonsten kommt im Unterprogramm ":Programm" der Laufwerksbuchstabe als %1 an (sollte mein Beispiel von oben eigentlich zeigen) - daher müsste die Zeile etwa so aussehen:
Auch diese Variante verlangt nicht zwingend nach einem Unterprogramm - letzteres ist eigentlich nur sinnvoll, wenn mehrere Aktionen je Laufwerk auszuführen wären oder mit Variablen (etwa für Dateinamen) hantiert werden müsste ...
Grüße
bastla
Wenn es nur ein simples "
move
" aller ".jpg"-Dateien werden soll, würde ich ohnehin Bibers Vorschlag (und der kommt ganz ohne Unterprogramm aus) empfehlen ...... ansonsten kommt im Unterprogramm ":Programm" der Laufwerksbuchstabe als %1 an (sollte mein Beispiel von oben eigentlich zeigen) - daher müsste die Zeile etwa so aussehen:
FOR /f "delims=" %%I IN ('DIR /s /b /a-d "%1:\*.jpg" 2^>NUL') DO MOVE "%%I" >NUL 2>&1
Grüße
bastla
SD kartenschacht kannst du unter Computerverwaltung, Datenträgerverwaltung einen Allgemeinen Laufwerksbuchstaben zuordnen
Links steht sowas wie:
Datenträger 1
Wechselmedium
Kein Medium
Dort rechtsklick und Laufwerksbuchstabe ändern
Wenn keine SD karte eingelegt ist, siehst den Schacht unter Arbeitsplatz auch nicht.
Gruss
Switcher
Links steht sowas wie:
Datenträger 1
Wechselmedium
Kein Medium
Dort rechtsklick und Laufwerksbuchstabe ändern
Wenn keine SD karte eingelegt ist, siehst den Schacht unter Arbeitsplatz auch nicht.
Gruss
Switcher
Hallo peterpan33!
Eigentlich hatte ich gehofft, Du würdest schon etwas ahnen ...
Wenn Du tatsächlich den Aufruf von ":PROGRAMM" benötigst:
Falls Du (warum auch immer) geschachtelte Schleifen bevorzugst:
Die Unterprogrammvariante von oben nachzubauen erspare ich uns mal ...
Grüße
bastla
[Edit] Parameterübergabe beim Aufruf des Unterprogrammes ergänzt [/Edit]
Eigentlich hatte ich gehofft, Du würdest schon etwas ahnen ...
Wenn Du tatsächlich den Aufruf von ":PROGRAMM" benötigst:
@echo off & setlocal
:NEU
FOR /f "delims=" %%I IN ('DIR /s /b /a-d E:\*.JPG F:\*.JPG G:\*.JPG H:\*.JPG 2^>NUL') DO (MOVE "%%I" . >NUL 2>NUL & call :PROGRAMM "%%I")
ping 0.0.0.0 -n 5 >NUL
GOTO NEU
:PROGRAMM
ECHO hier kanns weiter gehen
PAUSE
goto :eof
@echo off & setlocal
:NEU
for %%L in (E F G H) do (
FOR /f "delims=" %%I IN ('DIR /s /b /a-d %%L:\*.JPG 2^>NUL') DO (MOVE "%%I" . >NUL 2>NUL & call :PROGRAMM "%%I")
)
ping 0.0.0.0 -n 5 >NUL
GOTO NEU
:PROGRAMM
ECHO hier kanns weiter gehen
PAUSE
goto :eof
Grüße
bastla
[Edit] Parameterübergabe beim Aufruf des Unterprogrammes ergänzt [/Edit]
Hallo peterpan33!
einfach in eine neue Zeile zwischen der Schleife und dem Pausen-Ping (also als Zeile 3a bzw 5a) und nicht in den "
Grüße
bastla
Ich verstehe dich nicht, oder du scheinst mich nicht zu verstehen.
ACKich benötige den CALL PROGRAMM. Er soll aber erst ALLE Bilder verschieben und dann das :PROGRAMM aufrufen
Dann schreib dochcall :PROGRAMM
do
"-Teil der Schleife ...Grüße
bastla
Moin peterpan33,
ich verfüge ja nicht über bastlas schier unerschöpfliche Geduld...
Und ich finde es grundsätzlich anerkennenswert, wenn du dir so viel Gedanken über automatisierenswerte Prozessablaufoptimierung per Batch machst.
...Dennoch..
... WTF sparst du überhaupt dadurch, dass nach den Zusammenharken aller *.jpg-Dateien gleich ein Mach-whatever-mit-JPG-Programm aufgerufen wird??
Das Zusammenharken ist natürlich automatierbar und automatisierenswert... keine Frage.
Aber
Grüße
Biber
ich verfüge ja nicht über bastlas schier unerschöpfliche Geduld...
Und ich finde es grundsätzlich anerkennenswert, wenn du dir so viel Gedanken über automatisierenswerte Prozessablaufoptimierung per Batch machst.
...Dennoch..
... WTF sparst du überhaupt dadurch, dass nach den Zusammenharken aller *.jpg-Dateien gleich ein Mach-whatever-mit-JPG-Programm aufgerufen wird??
Das Zusammenharken ist natürlich automatierbar und automatisierenswert... keine Frage.
Aber
- hast du wirklich IMMER das Szenario, dass du nach dem MOVEN das Programm aufrufst? Oder auch einmal in der Woche den Fall, dass du nur eben schnell die SD-Karte leeren willst?
- und selbst wenn IMMER gleich das Programm aufrufen... wieso nicht erst der Doppelklick auf die HarkMirZsamma-Batch auf dem Desktop, dann der Doppelklick auf das Grafikprogramm?
Grüße
Biber
Hallo peterpan33!
Wie wär's dann damit:
Grüße
bastla
Wie wär's dann damit:
@echo off & setlocal
:NEU
set "Gefunden="
FOR /f "delims=" %%I IN ('DIR /s /b /a-d E:\*.JPG F:\*.JPG G:\*.JPG H:\*.JPG 2^>NUL') DO (MOVE "%%I" >NUL 2>NUL & set "Gefunden=ja")
if defined Gefunden call :PROGRAMM
ping 0.0.0.0 -n 5 >NUL
GOTO NEU
:PROGRAMM
ECHO hier kanns weiter gehen
PAUSE
goto :eof
bastla