Festplatte dann Freigeben wenn diese einen bestimmten Laufwerksnamen hat
Hallo zusammen,
ich möchte eine Batch schreiben, die eine externe Festplatte, die entweder Buchstabe D: oder E: hat, freigibt, wenn die Laufwerksbezeichnung "Sicherungsplatte" ist.
Doch leider gibt die Batch die Platte immer frei, egal wie die Laufwerksbezeichnung lautet.
Wo liegt der Fehler
Gruß und Dank!
for /f "tokens=1-5*" %%1 in ('vol d:') do (
set volume=%%6
)
if "%volume%" == "Sicherungsplatte" goto freigabe
:freigabe
net share Sicherungsplatte=d:
for /f "tokens=1-5*" %%1 in ('vol e:') do (
set volume=%%6
)
if "%volume%" == "Sicherungsplatte" goto freigabe
:freigabe
net share Sicherungsplatte=e:
ich möchte eine Batch schreiben, die eine externe Festplatte, die entweder Buchstabe D: oder E: hat, freigibt, wenn die Laufwerksbezeichnung "Sicherungsplatte" ist.
Doch leider gibt die Batch die Platte immer frei, egal wie die Laufwerksbezeichnung lautet.
Wo liegt der Fehler
Gruß und Dank!
for /f "tokens=1-5*" %%1 in ('vol d:') do (
set volume=%%6
)
if "%volume%" == "Sicherungsplatte" goto freigabe
:freigabe
net share Sicherungsplatte=d:
for /f "tokens=1-5*" %%1 in ('vol e:') do (
set volume=%%6
)
if "%volume%" == "Sicherungsplatte" goto freigabe
:freigabe
net share Sicherungsplatte=e:
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 179462
Url: https://administrator.de/contentid/179462
Ausgedruckt am: 25.11.2024 um 18:11 Uhr
10 Kommentare
Neuester Kommentar
Aloha,
1. möchte ich dich bitten unsere schöne ##blue|## Formatierung zu verwenden
2. möchte ich dich darauf hinweisen, dass
Du könntest also gleich mit
greetz André
P.S.: Feierabend
1. möchte ich dich bitten unsere schöne ##blue|## Formatierung zu verwenden
2. möchte ich dich darauf hinweisen, dass
vol d:
mehr als eine Zeile ausgibt, wodurch %%6
nicht definiert wird, ergo %volume%
ebenso wenig definiert ist, was du mit echo on
hättest feststellen können, bzw. pause
(oder direkt am cmd)Du könntest also gleich mit
'vol d:^|findstr "Sicherungsplatte"'
arbeiten, zum Beispiel greetz André
P.S.: Feierabend
Hallo Exzel!
Skye meinte es etwa so:
Warum es bei Deinem Ansatz sowieso nicht funktionieren konnte, ergibt sich einfach aus diesem Teil:
Was passiert wohl, wenn "%volume%" nicht gleich "Sicherungsplatte" ist?
Grüße
bastla
Skye meinte es etwa so:
vol d:|findstr "Sicherungsplatte">nul && net share Sicherungsplatte=d:
vol e:|findstr "Sicherungsplatte">nul && net share Sicherungsplatte=e:
if "%volume%" == "Sicherungsplatte" goto freigabe
:freigabe
net share Sicherungsplatte=d:
Grüße
bastla
Aloha,
naja dann tut doch
seinen Dienst
das
wenn das Skript eh nix anderes macht, kann man natürlich auch
einsetzen, wodurch sich das Skript nach erledigtem Job direkt beendet
greetz André
@bastla & Biber, seht ihr, mir fällt so etwas gar nicht auf, weil ich PLAINTEXT nicht verarbeite, sondern lese
... aber hätte er gleich ordentlich gesucht ... *pfeif*
edit: @Biber, ja ginge aber
naja dann tut doch
for %%s in (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 (
vol %%s:|findstr "Sicherungsplatte">nul && net share Sicherungsplatte=%%s:
cls
)
das
cls
ist nur für die Optik, falls man echo on hat ... da ja >nul
nicht die Fehlermeldung unterdrückt, wenn das Laufwerk nicht existiert wenn das Skript eh nix anderes macht, kann man natürlich auch
vol %%s:|findstr "Daten">nul && net share Sicherungsplatte=%%s: && goto :eof
greetz André
@bastla & Biber, seht ihr, mir fällt so etwas gar nicht auf, weil ich PLAINTEXT nicht verarbeite, sondern lese
... aber hätte er gleich ordentlich gesucht ... *pfeif*
edit: @Biber, ja ginge aber
if exist
dauert länger
Moin Exzel,
manchmal hilft es doch, wenn du einfach den Ablauf des Bätschelchens im normalen Umgangston wiedergibst.
-> der bisherige Code
<code type = plain>
if "%volume%" == "Sicherungsplatte" goto freigabe
:freigabe
net share Sicherungsplatte=d:
-> im Umgangston
Entscheidend ist die Zeile 02 in beiden Code-Dialekten.
Die sollte nicht "leer" sein, sondern den Code
Bzw. im Umgangston-Code die Anweisung
Grüße
Biber
[Edit] Skyes Ansatz ging auch ohne CLS
[/Edit]
manchmal hilft es doch, wenn du einfach den Ablauf des Bätschelchens im normalen Umgangston wiedergibst.
-> der bisherige Code
<code type = plain>
if "%volume%" == "Sicherungsplatte" goto freigabe
:freigabe
net share Sicherungsplatte=d:
-> im Umgangston
Wenn dat wolljuhm gleich Sicherungspladde is' dann springe SOFORT auf Freibier
Hier steht nix- > gehe weiter zur nächsten Zeile
Hier ist Freibier
Scher mir die Sicherungspladde
Entscheidend ist die Zeile 02 in beiden Code-Dialekten.
Die sollte nicht "leer" sein, sondern den Code
goto :eof
enthalten.Bzw. im Umgangston-Code die Anweisung
Dann leg dich wieder hin und vergiss es
.Grüße
Biber
[Edit] Skyes Ansatz ging auch ohne CLS
for %%s 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 IF EXIST %%s (
vol %%s:|findstr "Sicherungsplatte">nul && net share Sicherungsplatte=%%s:
)
Hallo,
ich habe keinen blassen Schimmer von Batchprogrammierung.
Lese aber oft interessiert mit.
Nur ein Hinweis:
Win-doof bis XP (ab win 7 bin ich mir nicht sicher) erwartet unter den Laufwerkbuchstaben a und b ein Diskettenlaufwerk keine Festplatte!
Deswgen macht es keine Sinn die Laufwerk a und b zu prüfen.
Außerdem macht es kaum Sinn die Systemplatte Platte als Sicherungsplatte zu nutzen, damit ziehst du dir den Boden unter den Füßen weg
brammer
ich habe keinen blassen Schimmer von Batchprogrammierung.
Lese aber oft interessiert mit.
Nur ein Hinweis:
Win-doof bis XP (ab win 7 bin ich mir nicht sicher) erwartet unter den Laufwerkbuchstaben a und b ein Diskettenlaufwerk keine Festplatte!
Deswgen macht es keine Sinn die Laufwerk a und b zu prüfen.
Außerdem macht es kaum Sinn die Systemplatte Platte als Sicherungsplatte zu nutzen, damit ziehst du dir den Boden unter den Füßen weg
brammer
Hallo Exzel!
Mehr dazu siehe oberhalb bei Biber ...
Grüße
bastla
dann soll er weitermachen mit dem nächsten Laufwerk
Das musst Du dem dann aber doch auch sagen - von alleine kommt ein Batch nie auf so eine Idee ... Mehr dazu siehe oberhalb bei Biber ...
Grüße
bastla