Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Festplatte dann Freigeben wenn diese einen bestimmten Laufwerksnamen hat

Frage Entwicklung Batch & Shell

Mitglied: Exzel

Exzel (Level 2) - Jetzt verbinden

24.01.2012, aktualisiert 18.10.2012, 3426 Aufrufe, 10 Kommentare

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:
Mitglied: Skyemugen
24.01.2012 um 16:05 Uhr
Aloha,

1. möchte ich dich bitten unsere schöne <code></code> 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
Bitte warten ..
Mitglied: Exzel
24.01.2012, aktualisiert 18.10.2012
Hallo nochmal,

leider hat mir das auch nicht weitergeholfen. Es kam immer eine Fehlermeldung.

Ist aber auch egal:

01.
@echo off & setlocal  
02.
 
03.
:: zu durchsuchende Laufwerksbuchstaben eintragen  
04.
 
05.
set Suche=D E F G H I J K L M N O P Q R S T U V W X Y Z  
06.
 
07.
::Volume Label der gesuchten Partition  
08.
 
09.
set Label=Sicherungsplatte 
10.
 
11.
set lw=  
12.
 
13.
for %%a in (%suche%) do for /f "tokens=6 delims= " %%i in ('VOL %%a:') do (if "%%i"=="%Label%" set LW=%%a:)  
14.
 
15.
 
16.
if defined lw (@echo %lw%) else (@echo Kein passendes Volume gefunden  & goto :eof)  
17.
 
18.
 
19.
net share Sicherungsplatte=%lw% 
20.
 
21.
 
22.
Pause 
23.
 
Den Code hab ich von dem Beitrag.
http://www.administrator.de/forum/volume-label-in-einer-batch-benutzen- ...

Vielen Dank und Hut ab!
Bitte warten ..
Mitglied: bastla
24.01.2012 um 17:35 Uhr
Hallo Exzel!

Skye meinte es etwa so:
01.
vol d:|findstr "Sicherungsplatte">nul && net share Sicherungsplatte=d: 
02.
vol e:|findstr "Sicherungsplatte">nul && net share Sicherungsplatte=e:
Warum es bei Deinem Ansatz sowieso nicht funktionieren konnte, ergibt sich einfach aus diesem Teil:
01.
if "%volume%" == "Sicherungsplatte" goto freigabe 
02.
 
03.
:freigabe 
04.
net share Sicherungsplatte=d:
Was passiert wohl, wenn "%volume%" nicht gleich "Sicherungsplatte" ist?

Grüße
bastla
Bitte warten ..
Mitglied: Exzel
24.01.2012 um 17:54 Uhr
Hallo bastla,

dann soll er weitermachen mit dem nächsten Laufwerk und ermitteln welche Bezeichnung das wiederum hat.

Also wenn Laufwerk D nicht Sicherungsplatte heißt dann soll er weitermachen mit Laufwerk E

Gruß
Bitte warten ..
Mitglied: Skyemugen
24.01.2012 um 18:24 Uhr
Aloha,

naja dann tut doch
01.
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 ( 
02.
	vol %%s:|findstr "Sicherungsplatte">nul && net share Sicherungsplatte=%%s: 
03.
	cls 
04.
)
seinen Dienst

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
01.
vol %%s:|findstr "Daten">nul && net share Sicherungsplatte=%%s: && goto :eof
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 if exist dauert länger
Bitte warten ..
Mitglied: Biber
24.01.2012 um 18:27 Uhr
Moin Exzel,

manchmal hilft es doch, wenn du einfach den Ablauf des Bätschelchens im normalen Umgangston wiedergibst.

-> der bisherige Code
01.
if "%volume%" == "Sicherungsplatte" goto freigabe 
02.
 
03.
:freigabe 
04.
net share Sicherungsplatte=d:
-> im Umgangston
01.
Wenn dat wolljuhm gleich Sicherungspladde is' dann springe SOFORT auf Freibier 
02.
Hier steht nix- > gehe weiter zur nächsten Zeile 
03.
Hier ist Freibier 
04.
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
01.
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 ( 
02.
	vol %%s:|findstr "Sicherungsplatte">nul && net share Sicherungsplatte=%%s: 
03.
)
[/Edit]
Bitte warten ..
Mitglied: brammer
24.01.2012 um 20:50 Uhr
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
Bitte warten ..
Mitglied: bastla
24.01.2012, aktualisiert 18.10.2012
Hallo Exzel!
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
Bitte warten ..
Mitglied: Exzel
25.01.2012 um 09:11 Uhr
Hallo nochmal,

das ist mir jetzt auch klar. Wenn ich es mit meinem einfachen Ansatz probiert hätte, hätte ich alle IF-Anweisungen hintereinander Zeile nach Zeile schreiben müssen, damit die Batch zum nächsten Laufwerk springt.

Gruß
Bitte warten ..
Mitglied: bastla
25.01.2012 um 09:18 Uhr
... oder als Alternative die direkte Verarbeitung (wie in meinem Ansatz oben oder Skyes Schleifenvariante etwas darunter) verwenden können - dann entfallen alle Sprünge ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Windows Userverwaltung
Nur eine bestimmte Datei in einem Netzlaufwerk freigeben (3)

Frage von Sprudi zum Thema Windows Userverwaltung ...

Exchange Server
Exchange Ordner für Nicht-Exchange Nutzer freigeben? (3)

Frage von epionier zum Thema Exchange Server ...

Outlook & Mail
gelöst Outlook Kalender freigeben funktioniert nicht (1)

Frage von Zippo97 zum Thema Outlook & Mail ...

DNS
Webseite mit IPv6 freigeben (1)

Frage von Lanseuo zum Thema DNS ...

Neue Wissensbeiträge
Humor (lol)

Wohnt jemand in Belgien und kann nicht mehr ruhig ausschlafen?

(3)

Information von LordGurke zum Thema Humor (lol) ...

Sicherheits-Tools

Trendmicro OSCE und das Fall Creators Update Win10 RS3

(3)

Information von Henere zum Thema Sicherheits-Tools ...

Microsoft Office

Text in Zahlen umwandeln

Tipp von logische zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Microsoft Office
ICH BIN AM ENDE MEINES IT-WISSENS ANGELANGT!!!! (38)

Frage von 134537 zum Thema Microsoft Office ...

Windows Server
Gruppenrichtlinie greift nicht zu! (24)

Frage von Syosse zum Thema Windows Server ...

Hosting & Housing
Mailserver Software Empfehlungen (21)

Frage von sunics zum Thema Hosting & Housing ...