Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 3376 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...