Name der Batchdatei verwenden
Hallo Community,
wie kann ich einen Batch nur mit unterschiedlichen Dateinamen anhand des Dateinamens steuern?
Beispiel: zum Verwalten meiner Netzlaufwerke mit dem Befehl "net use" möchte ich drei verschiedene Funtionen aufrufen.
1. Das Mounten aller Laufwerke in einem Durchlauf
net use J: \\NAS1\music
net use K: \\NAS1\photo
net use L: \\NAS2\video
net use M: \\NAS3\Media
2. Das AbMounten aller Laufwerke in einem Durchlauf
net use J: /delete
net use K: /delete
net use L: /delete
net use M: /delete
3. Eine Abfrage des Status aller gemounteten Laufwerke
net use
Ziel ist, mit ein- und dem selben Code die verschiedenen Fuktionen über den Namen der Batchdatei zu steuern.
Welche Variable trägt den Namen der eigenen Batchdatei für diese Abfrage?
Ich habe vor langer Zeit mal in Perl programmiert, da war sowas möglich.
Bitte um eine brauchbare Lösung, bleibt gesund, Grüße, Dogweazle
wie kann ich einen Batch nur mit unterschiedlichen Dateinamen anhand des Dateinamens steuern?
Beispiel: zum Verwalten meiner Netzlaufwerke mit dem Befehl "net use" möchte ich drei verschiedene Funtionen aufrufen.
1. Das Mounten aller Laufwerke in einem Durchlauf
net use J: \\NAS1\music
net use K: \\NAS1\photo
net use L: \\NAS2\video
net use M: \\NAS3\Media
2. Das AbMounten aller Laufwerke in einem Durchlauf
net use J: /delete
net use K: /delete
net use L: /delete
net use M: /delete
3. Eine Abfrage des Status aller gemounteten Laufwerke
net use
Ziel ist, mit ein- und dem selben Code die verschiedenen Fuktionen über den Namen der Batchdatei zu steuern.
Welche Variable trägt den Namen der eigenen Batchdatei für diese Abfrage?
Ich habe vor langer Zeit mal in Perl programmiert, da war sowas möglich.
Bitte um eine brauchbare Lösung, bleibt gesund, Grüße, Dogweazle
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 581190
Url: https://administrator.de/contentid/581190
Ausgedruckt am: 25.11.2024 um 22:11 Uhr
11 Kommentare
Neuester Kommentar
Moin,
welchen Batchcode hast Du bisher? - Keinen?
Und hier etwas Lesefutter bzgl. Windows Batch:
Ein Beispiel:
Und nennst die Batchdatei Mount_All.cmd
Weiteres Beispiel:
Und nennst die Batchdatei Unmount_All.cmd
Und für den Rest lese die von mir angegebenen Links.
Gruss Penny.
welchen Batchcode hast Du bisher? - Keinen?
Und hier etwas Lesefutter bzgl. Windows Batch:
- Windows Batch Grundlagen
- Batch - ein paar Basics die man kennen sollte
- Workshop Batch for Runaways - Part I
- Workshop Batch for Runaways - Part II
- Workshop Batch for Runaways - Part III
- HowTo - Wie man Subroutinen in Batchfiles erstellt
- Tutorial zur FOR-Schleife
Ein Beispiel:
@Echo Off
net use J: \\NAS1\music
net use K: \\NAS1\photo
net use L: \\NAS2\video
net use M: \\NAS3\Media
Und nennst die Batchdatei Mount_All.cmd
Weiteres Beispiel:
@Echo Off
net use J: /delete
net use K: /delete
net use L: /delete
net use M: /delete
Und für den Rest lese die von mir angegebenen Links.
Gruss Penny.
Moin,
du willst also 4 Batch Dateien, die jeweils folgendes erledigen?
dann kannst du deine Batchs mit den Parametern aufrufen:
und deine batch sieht dann wie folgt aus:
für das unmount kannst du aber auch einfach ein
ausführen lassen. Dann werden ALLE Netzwlaufwerke getrennt.
Edit:
Wenn alles in "einem Rutsch" mit nur einer Batch laufen soll, ist der Ansatz des Kollegen @Penny.Cilin das Mittel der Wahl
Gruß
em-pie
du willst also 4 Batch Dateien, die jeweils folgendes erledigen?
REM Mount Share
net use %drv% \\%srv%\%share%
REM unmount Share
net use %drv% /del
dann kannst du deine Batchs mit den Parametern aufrufen:
REM Mount Shares
c:\SCRIPT\mybatch.cmd 1 J NAS1 music
c:\SCRIPT\mybatch.cmd 1 K NAS1 photo
c:\SCRIPT\mybatch.cmd 1 L NAS2 video
c:\SCRIPT\mybatch.cmd 1 M NAS3 media
REM unmount
c:\SCRIPT\mybatch.cmd 0 J
c:\SCRIPT\mybatch.cmd 0 K
c:\SCRIPT\mybatch.cmd 0 L
c:\SCRIPT\mybatch.cmd 0 M
und deine batch sieht dann wie folgt aus:
SET state=%1
SET drv= %2
SET srv=%3
SET share=%4
IF %state% = 0 (
net use %drv% /del
exit
)
IF %state% = 1 (
net use %drv%: \\%srv%\%share%
exit
)
EXIT
für das unmount kannst du aber auch einfach ein
net use * /delete /yes
Edit:
Wenn alles in "einem Rutsch" mit nur einer Batch laufen soll, ist der Ansatz des Kollegen @Penny.Cilin das Mittel der Wahl
Gruß
em-pie
Moin,
dann frag den Namen der Batch via %0
ab...
30 Sekunden:
google "Batch Paramater" -> 1. Treffer -> kurz prüfen und hier Posten:
https://it-learner.de/batch-script-parameter-uebergeben/
Edit: Variable korrigiert
Gruß
em-pie
dann frag den Namen der Batch via
%~n0
30 Sekunden:
google "Batch Paramater" -> 1. Treffer -> kurz prüfen und hier Posten:
https://it-learner.de/batch-script-parameter-uebergeben/
Edit: Variable korrigiert
Gruß
em-pie
Zitat von @em-pie:
Moin @penny
dein zweiter Link geht nicht. Vermutlich weil dies die URL aus deiner persönlichen Beobachtungsliste ist
Stimmt. Habe ich angepasst. - Danke für den Hinweis.Moin @penny
dein zweiter Link geht nicht. Vermutlich weil dies die URL aus deiner persönlichen Beobachtungsliste ist
https://administrator.de/members/watchlist.php?m=1&limit=60
Gruß
em-pie
em-pie
Gruss Penny.
Zitat von @Dogweazle:
Hallo em-pie,
danke für die Vorschläge,
aber es ging mir ja nicht um verschiedene Batchdateien, sondern um eine Batchdatei (ein- und derselbe Code),
unter drei verschiedenen Namen abgelegt, deren Ausführung durch den Namen gesteuert wird.
Beispiel: Name des Batches in Variable %0
goto %0
REM wenn Name = mount
:mount
net use J: \\NAS1\data
REM wenn Name =umount
:umount
net use J: /delete
REM wenn Name=mountinfo
:mountinfo
net use
Hallo em-pie,
danke für die Vorschläge,
aber es ging mir ja nicht um verschiedene Batchdateien, sondern um eine Batchdatei (ein- und derselbe Code),
unter drei verschiedenen Namen abgelegt, deren Ausführung durch den Namen gesteuert wird.
Beispiel: Name des Batches in Variable %0
goto %0
REM wenn Name = mount
:mount
net use J: \\NAS1\data
REM wenn Name =umount
:umount
net use J: /delete
REM wenn Name=mountinfo
:mountinfo
net use
Dann brauchst du aber wieder drei Batch-Files:
- mount.cmd
- unmount.cmd
- mountinfo.cmd
Ich würde daher nur eine BatchFile erstellen (siehe oben) und diese mit (einem) Parameter(n) aufrufen...
-> myMount.cmd [Status]
In der Batch wird dann der Parameter mit %1 abgefragt und entsprechend geprüft:
Status = 0 löscht alle Netzkaufwerke
Status = 1 mountet alle Laufwerke
Status = 2 zeigt die Infos an.
Eine batch, die verschiedene Dinge erledigt.
Auf dem Desktop legst du dir dann drei Verknüpfungen an, die jeweils einen anderen Inhalt des Status-Parameters übergeben.
Gruß
em-pie
Moin Moin,
In einer Batch kann Ich Abfragen wie der eigene Namen heißt.
Z.B. mit
Und habe dann die Variable
Und dann die Abfrage
Mit Stati ist das Skript meiner Meinung nach viel Variabler weil der Stati einfach zu ändern ist.
Allerdings ist deine Wunsch Methode Dau Sicherer.
Ein Mount oder UnMount kann man einem Dau erklären, der sollte sich das dann später ableiten können.
Eine Universal CMD mit einem anderen Status wird er nach 6monaten sich nicht ableiten können...
Hat beides sein für und wieder.
Nur mein Senf
In einer Batch kann Ich Abfragen wie der eigene Namen heißt.
Z.B. mit
set Dateiname="%~n0"
Und habe dann die Variable
%Dateiname%
Und dann die Abfrage
if /I %Dateiname%=
Mit Stati ist das Skript meiner Meinung nach viel Variabler weil der Stati einfach zu ändern ist.
Allerdings ist deine Wunsch Methode Dau Sicherer.
Ein Mount oder UnMount kann man einem Dau erklären, der sollte sich das dann später ableiten können.
Eine Universal CMD mit einem anderen Status wird er nach 6monaten sich nicht ableiten können...
Hat beides sein für und wieder.
Nur mein Senf