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

Bitte um Unterstützung bei folgendem for

Frage Entwicklung Batch & Shell

Mitglied: jschneider

jschneider (Level 1) - Jetzt verbinden

17.07.2008, aktualisiert 18.07.2008, 2569 Aufrufe, 2 Kommentare

Hallo,

ich stehe irgendwie auf dem Schlauch


ich habe eine Quelldatei auf Basis derer Inhalte ich Verzeichnisse und die dazugehörigen Gruppen im AD anlegen möchte und darüber hinaus diese Verzeichnise gleich auf die angelegte Gruppe berechtigen möchte. Soweit erstmal zum Hintergrund


meine Quelldatei hat z.B. folgende Inhalte

01.
\RootVerzeichnis1 
02.
\RootVerzeichnis1\Unterverzeichnis1 
03.
\RootVerzeichnis1\Unterverzeichnis2 
04.
 
05.
\RootVerzeichnis2 
06.
\RootVerzeichnis2\Unterverzeichnis1 
07.
\RootVerzeichnis2\Unterverzeichnis2\nocheinunterverzeichnis1 
08.
\RootVerzeichnis2\Unterverzeichnis3\nocheinunterverzeichnis2 
09.
\RootVerzeichnis2\Unterverzeichnis4\ 
10.
\RootVerzeichnis2\Unterverzeichnis5\nocheinunterverzeichnis1\nocheinunterverzeichnis3
usw.

mehr als 4 Ebenen wird es nicht geben

ich möchte jetzt also jede Zeile auseinandernehmen und die Werte zwischen den "\" verarbeiten ABER ich weiss halt nicht wieviele es je Zeile sind (von 1 -4 Werte) Das muss aber abgefangen werden. das ist eigentlich mein größtest Problem

Das Verzeichnis anlegen würde schon gehen, in dem ich den ganzen String so einlese, aber ich möchte auch die Gruppen anlegen die dann so heissen sollen:


Grp_Org_RootVerzeichnis1
Grp_Org_RootVerzeichnis1_Unterverzeichnis1
Grp_Org_RootVerzeichnis2_Unterverzeichnis5_nocheinunterverzeichnis1_nocheinunterverzeichnis3


was ich bsiher habe (allerdings früheste Alpha)


01.
 
02.
@echo off & setlocal 
03.
chcp 1252 
04.
 
05.
Set Source=C:\scripting\20-scripts\Quelldatei.txt 
06.
Set LW=R: 
07.
 
08.
 
09.
if not Exist %LW% net use %LW% \\Server1\Share1 
10.
 
11.
 
12.
 
13.
for /f "tokens=1,* delims=\" %%i in ('findstr "\" "%Source%"') do ( 
14.
   echo Hier erfolgt ein Wunder 
15.
   call :VerzeichnisAnlegen %%i "%%K" 
16.
   call :GruppeAnlegen 
17.
   call :BerechtigungSetzen 
18.
19.
goto :eof 
20.
 
21.
:VerzeichnisAnlegen 
22.
set "Verzeichnis=%1" 
23.
md %LW%\ 
24.
 
25.
goto :eof 
26.
 
27.
:GruppeAnlegen 
28.
Set "vGrp=%1" 
29.
Set grpPrefix=Grp_Org_ 
30.
net group %grpPfefix%%vGRP% /domain >NUL 
31.
goto :eof 
32.
 
33.
:BerechtigungSetzen 
34.
setacl Werte und Parameter hier (nicht das Poblem) 
35.
goto :eof 
36.
 
37.
 
Mitglied: Biber
17.07.2008 um 17:56 Uhr
Moin jschneider,

ich weiss nich'...
Mag sein, dass ich zu einfach gestrickt bin für den harten Admin-Alltag, aber ich würde es mir nicht so schwer machen.

Wenn ich Deine Beispielsätze bei mir in eine Datei js.txt packe, dann kann ich es jeweils so trennen (Beispiel am CMD-Prompt, mein Prompt sieht so: ">" aus):
01.
(=17:52:27  D:\temp=) 
02.
>For /f "delims=\ tokens=1-2" %a in (js.txt) do @if "%b"=="" @echo Roots: %a goto Roots 
03.
Roots: RootVerzeichnis1 goto Roots 
04.
Roots: RootVerzeichnis2 goto Roots 
05.
 
06.
(=17:53:45  D:\temp=) 
07.
>For /f "delims=\ tokens=1-3" %a in (js.txt) do @if "%c"=="" if "%b" NEQ "" @echo goto :EinSubdir %a\%b 
08.
goto :EinSubdir RootVerzeichnis1\Unterverzeichnis1 
09.
goto :EinSubdir RootVerzeichnis1\Unterverzeichnis2 
10.
goto :EinSubdir RootVerzeichnis2\Unterverzeichnis1 
11.
goto :EinSubdir RootVerzeichnis2\Unterverzeichnis4 
12.
 
13.
(=17:54:33  D:\temp=) 
14.
>For /f "delims=\ tokens=1-4" %a in (js.txt) do @if "%d"=="" if "%c" NEQ "" @echo goto :2Subdir %a\%b\%c 
15.
goto :2Subdir RootVerzeichnis2\Unterverzeichnis2\nocheinunterverzeichnis1 
16.
goto :2Subdir RootVerzeichnis2\Unterverzeichnis3\nocheinunterverzeichnis2
Genauso kannst Du es doch auch im Batch handeln, oder übersehe ich etwas?

Grüße
Biber
Bitte warten ..
Mitglied: jschneider
18.07.2008 um 11:35 Uhr
Hallo Biber,

mag auch sein, dass ich immer zu kompliziert denke und alles (ausser Brotschneiden) viel einfacher geht als ich denke.

ich habe gestern noch mal einen anderen Ansatz ausprobiert

und zwar zähle ich einfach die dinger nicht, sondern nutze sie wie sie sind

den String
01.
\\RootVerzeichnis2\\Unterverzeichnis2\\nocheinunterverzeichnis1 
nehme ich einfach wie er ist und nutze ihn einmal (in einer Funktion) als Pfad .. da muss ich ja nicht mehr viel mit anstellen

und einmal per
01.
set vGrp=!vGRP:\\=_!
ersetze ich die "\" einfach durch ein "_" *brustschwell*


damit habe ich alles was ich will
Bitte warten ..
Neuester Wissensbeitrag
Off Topic

"Ich habe nichts zu verbergen"

(2)

Erfahrungsbericht von FA-jka zum Thema Off Topic ...

Ähnliche Inhalte
Linux
Archlinux plant die i686 (32Bit) Unterstützung einzustellen

Information von mrtux zum Thema Linux ...

LAN, WAN, Wireless
Suche 802.11a,b,g,n,ac USB Stick mit Linux Mesh Unterstützung (4)

Frage von marinux zum Thema LAN, WAN, Wireless ...

Heiß diskutierte Inhalte
Linux Netzwerk
gelöst DHCP vergibt keine Adressen (31)

Frage von Maik82 zum Thema Linux Netzwerk ...

Exchange Server
gelöst Bestehende eMails autoamatisch weiterleiten (22)

Frage von metal-shot zum Thema Exchange Server ...

Apache Server
gelöst Lets Encrypt SSL mit Apache2 (20)

Frage von banane31 zum Thema Apache Server ...

Switche und Hubs
LAG zwischen SG300-Switches macht Probleme. Wer weiß Rat? (19)

Frage von White-Rabbit2 zum Thema Switche und Hubs ...