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

Aus einem Verzeichnis bestimmte Inhalte von Dateien extrahieren und sortiert in eine Datei schreiben.

Frage Entwicklung Batch & Shell

Mitglied: mag-lion

mag-lion (Level 1) - Jetzt verbinden

28.04.2011 um 17:01 Uhr, 2872 Aufrufe, 8 Kommentare

Hallo,

ich komme mit dem Script nicht weiter. Auch die Suche in den Foren brachte letztendlich keinen Erfolg.
Deshalb hoffe ich hier auf Unterstützung.

Folgende Ausgangssituation:
Über ein Loginscript werden je PC und User verbundene Netzlaufwerke
jeweils in eine Datei "n.%computername%(%username%).txt" geschrieben.
Z.B.
Inhalt von n.pc1(user1).txt

26.04.2011
I: \\srv01\share-a
J: \\srv01\share-b
K: \\srv02\share-x
L: \\srv02\share-y

27.04.2011
I: \\srv01\share-a
J: \\srv01\share-b
K: \\srv02\share-x
L: \\srv02\share-y




Inhalt von n.pc2(user1).txt

26.04.2011
K: \\srv01\share-a

27.04.2011
K: \\srv01\share-a




Inhalt von n.pc2(user2).txt

26.04.2011
I: \\srv01\share-a
J: \\srv01\share-b
K: \\srv02\share-x
L: \\srv02\share-y

27.04.2011
I: \\srv01\share-a
J: \\srv01\share-b
K: \\srv02\share-x
L: \\srv02\share-y




Solche gibt es zu Hauf in dem Verzeichnis mit entsprechendem Inhalt.
Wobei sie noch variieren mit gleichen %computername% aber unterschiedlichen
%username%, Inhalt entsprechend ebenfalls.

Ich möchte nun eine Datei erstellen lassen, die evtl. so aussieht bzw. was
ich daraus entnehmen könnte:

_____pc1/user1 #ein User mit seinem PC und verbundenen Laufwerken
I: \\srv01\share-a
J: \\srv01\share-b
K: \\srv02\share-x
L: \\srv02\share-y
_____pc2/user1 #der gleiche User am anderen PC mit falsch verbundenem Laufwerk
K: \\srv01\share-a
_____pc2/user2 #ein anderen User am obigen PC mit richtig verbundenen Laufwerken
I: \\srv01\share-a
J: \\srv01\share-b
K: \\srv02\share-x
L: \\srv02\share-y


Folgendes Script bringt mir noch nicht das gewünschte Ergebnis.

01.
for /f %%i in ('dir /o /b *.txt') do (  
02.
	rem sort %%i /o %%i 
03.
	for /f "delims=.() tokens=2,3" %%a in ('echo %%i') do echo _____%%a/%%b >> %~n0.log 
04.
	rem for /f "delims=" %%x in ('sort %%i') do @findstr "%%x" "%~n0.log">nul || @echo %%x >> %~n0.log 
05.
	rem for /f "delims=" %%x in ('sort %%i') do @findstr /C:": \\" "%~n0.log">nul || @echo %%x >> %~n0.log 
06.
	rem findstr /C:": \\" %%i >> %~n0.log 
07.
	echo. >> %~n0.log 
08.
)
Wobei Zeile 2 mir die Ausgangsdatei zerschiesst.
Zeile 3 dient als Überschrift.
4, 5 oder 6 als entsprechende Variante. (ungenügende).

Ich brauch hierbei dringend Hilfe um zum obigen Ergebnis zu kommen. Im "Inhalt" jeder Datei
sind die Angaben mehrfach vorhanden. Ich möchte diese aber nur jeweils einmal haben.



Grüße
mag
Mitglied: bastla
28.04.2011 um 17:28 Uhr
Hallo mag-lion!

Versuch's mal so (nur oberflächlich getestet):
01.
@echo off & setlocal 
02.
set "Log=%~n0.log" 
03.
set "TLog=%temp%\%Log%.tmp" 
04.
 
05.
del "%Log%" 2>nul 
06.
for /f %%i in ('dir /o /b *.txt') do (  
07.
    for /f "delims=.() tokens=2,3" %%a in ("%%i") do >"%TLog%" echo _____%%a/%%b 
08.
    for /f "delims=" %%x in ('findstr /C:": \\" "%%i"') do findstr "%%x" "%TLog%">nul||>>"%TLog%" echo %%x 
09.
    >>"%Log%" sort "%TLog%" 
10.
    >>"%Log%" echo. 
11.
12.
del "%TLog%"
Grüße
bastla
Bitte warten ..
Mitglied: 60730
28.04.2011 um 17:52 Uhr
moin,

ich hätte da eine Idee, aber die "spinn" ich erst weiter - wenn du uns den Grund nennst, warum du das so haben willst.

Diese Datei(en) erzeugst du ursprünglich ~ so?

01.
for /f "tokens=2,3" %a in ('net use^|find ":"') do echo %a;%b
gruß
Bitte warten ..
Mitglied: mag-lion
29.04.2011 um 06:51 Uhr
Guten Morgen,

schön, wenn Profis am (im) Werk sind .

@bastla
Oberflächlich ist gut. ist perfekt und vielen vielen Dank.

@TimoBeil
Ja, die Zeile passt.
Hintergrund: Ich möchte die, hier durch mehrfach vorhandene Login-Scripte und manuell
verbundenen Laufwerksbuchstaben reduzieren. Deshalb war der erste Ansatz vor einiger
Zeit: Erst mal sehen, wer sich welche wo verbindet, Auswertung folgt später. Und zwar jetzt.
Dann bin ich mal gespannt auf deine Schlußfolgerung.

Grüße
mag
Bitte warten ..
Mitglied: bastla
29.04.2011 um 08:09 Uhr
Hallo mag-lion!

Freut mich, wenn's soweit passt ...

Wenn ich, so wie T-Mo es zumindest andeutet, schon bei der Erstellung der Logs ansetzen könnte (und nicht die bereits Vorhandenen verarbeiten muss), würde ich zumindest vollständige Datensätze verwenden - also zusätzlich Rechnername, Username, Datum getrennt (CSV) in jeder Zeile mit ausgeben, weil damit die Nachbearbeitung (Sortierung, Gruppenverarbeitung) vereinfacht wird - und maximal eine Datei je Rechner erstellen ...

Grüße
bastla
Bitte warten ..
Mitglied: 60730
29.04.2011 um 10:01 Uhr
moin,

na da bin ich aber froh, dass ich keinen Aufsatz gemalt habe

Aber........

  • Kannst du uns noch ein paar Infos geben...

  • habt Ihr Gruppen?
  • wieviele User?
  • überall identische Geräte - bis jetzt ist dein Logfile ja nur mit Netzwerklaufwerken und "I" ist verdächtig nahe an irgendwelchen USB mehrfach Kartenlesern dran.

Abhängig davon, würde ich das so skizzieren:
Zu mehr als einer Skizze werde ich heute wegen Vollem Programm nicht kommen...

  • mit der obigen Skizze ~ so weiterwerkeln...
01.
for /f "tokens=2,3" %a in ('net use^|find ":"') do echo %a;%username%;%computername%;%date%>>%b\map.txt
edit - nein doch eher so...

Ach ja, n: gibt es noch nicht.

<edit 2>:

nein - weil ich nicht mal eben in allen meinen gemappten Laufwerken eine Datei haben wollte, hab ich das nur mit n: getestet und das hier gutverbergt.
Und wo du die speicherst - ist dir überlassen - ich fand den Ansatz - ohne zu wissen wie Ihr da werkelt - logisch.
Mit einem dir /b /s map.txt und wenigen Servern wäre da ja kein Ding - aber hat der User da nur leserechte - wäre das ein Griff in den gekachelten Raum.

Ich schrub doch - ich hab grad selber ein volles Programm und da Bastla auch im Boot ist - dachte ich - schreibs runter - dann habt ihr beide und ff. was zum diskutieren.

Freut mich aber, das du mitdenkst.
</edit2>
01.
for /f "tokens=2,3" %a in ('net use^|find ":"') do findstr /i /c:"%a;%username%;%computername%;" "%b\map.txt" ||echo %a;%username%;%computername%;%date%>>%b\map.txt
/edit

Und dann Freigabe für Freigabe durchschauen, statt User für User...

  • Je nachdem ob oder ob Ihr keine Gruppen habt - dann nach der Liste Gruppen anlegen.

(Du ahnst es - dazu kannst du das Logfile benutzen net group /?)

Gruß
Bitte warten ..
Mitglied: mag-lion
29.04.2011 um 11:36 Uhr
Hallo TimoBeil,

... Aufsatz malen... Wie sieht der denn aus?
fehlt noch: Namen tanzen... 0

  • Gruppen - meinst du AD-Gruppen, dann ja und zwar ne ganze Menge.
  • User - so um die 400.
  • Geräte - verschiedene. Und wegen der LW-Buchstaben geht es teilweise bis F: zurück - deswegen der Versuch Ordnung zu schaffen.

Dein Ansatz hat imho den Nachteil für mich, dass dieser die map.txt in die jeweilige Freigabe schreibt.
Da ich aber welche habe, die manuell vom User selbst sonstwohin gemappt wurden, würde ich diese dann nicht
finden. Ach ja, n: gibt es noch nicht. Also wäre hier auch das Problem welche LW-Buchstaben werden verwendet?
Also n: raus lassen und alles in eine "Sammel"map.txt zentral. Von Anfang an - JA.

Vielen Dank für die Mühe


Grüße
mag
Bitte warten ..
Mitglied: mag-lion
29.04.2011 um 11:56 Uhr
Ups... mitten drin editiert. Hatte ich nicht gleich gesehen.

Deine Lösung heb ich mir auf, falls ich noch mal so ein Chaos vorfinde.
Also jetzt nicht weiter stressen lassen und ich markiere den Beitrag als gelöst.

Nochmals danke.

Gruß
mag
Bitte warten ..
Mitglied: 60730
29.04.2011 um 12:20 Uhr
Zitat von mag-lion:
Hallo TimoBeil,

... Aufsatz malen... Wie sieht der denn aus?

Besser als eine geschriebene Skizze

Nur damit du es mitbekommst - ich hab da oben Besuch von Tante Edit ...

Gruß
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst 2 große TXT Dateien vergleichen und Unterschiede in andere Datei schreiben (6)

Frage von sid.pdm zum Thema Batch & Shell ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Batch & Shell
gelöst Batch-Skript: Messdaten in Textdatei finden und in eine neue Datei schreiben (5)

Frage von habmalnefrage zum Thema Batch & Shell ...

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 ...