Top-Themen

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, 3434 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
Frage von SprudiWindows Userverwaltung3 Kommentare

Hallo Community, stehe gerade auf dem Schlauch. Es existiert ein Netzlaufwerk worauf nur ein kleiner Personenkreis Zugriff besitzt. In ...

Windows Server
Drucker auf Terminalserver bestimmten Personen freigeben
gelöst Frage von moltovaWindows Server3 Kommentare

Hi, entweder seh ich den Walt vor lauter Bäumen nicht mehr oder ich gehe das ganze vom Grunde falsch ...

Windows Netzwerk
Einzelne Drucker per GPO an bestimmte User freigeben?
Frage von Stefan007Windows Netzwerk8 Kommentare

Hallo Leute, folgendes Problem: In unserem Unternehmen haben wir 25 PC's / User und insgesamt über 50 virtuelle Drucker. ...

Visual Studio
CSharp Festplatte nach bestimmtem Ordnernamen durchsuchen
gelöst Frage von 115122Visual Studio10 Kommentare

Guten Tag :) ich brauche als Bestandteil eines kleinen Programmes eine Funktion, welche meine Festplatte beispielsweise nach allen Ordnern ...

Neue Wissensbeiträge
Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 7 StundenPerl2 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 7 StundenSicherheit1 Kommentar

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 1010 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 TagenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell22 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Netzwerkgrundlagen
Belibiges Teilnetz einer Subnetzmaske rausfinden?
gelöst Frage von CenuzeNetzwerkgrundlagen18 Kommentare

Wundervollen Gutentag, mittlerweile kann ich Subnetting so einigermaßen, aber ein Problem habe ich noch. Netzwerkadresse und Boradcast errechnen ist ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless12 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Windows Server
Logging von "gesendeten Nachrichten" auf Terminalservern
gelöst Frage von Z3R0C0MM4N0THiN6Windows Server10 Kommentare

Hallo zusammen, kann mir jemand auf kurzem Wege sagen ob 1) die per Task-Manager (oder damals tsadmin) an Benutzer ...