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

Kann man die Zeilennummer aus einer Find-Abfrage als Skip-Argument für eine For-Abfrage nutzen? Nee, aber gibt es einen anderen Weg?

Frage Entwicklung Batch & Shell

Mitglied: Jochem

Jochem (Level 2) - Jetzt verbinden

13.05.2011 um 09:56 Uhr, 3491 Aufrufe, 2 Kommentare

Umgebung; W2K8-Domäne mit XP-Clients; Domäne läuft unter "Full-Service" eines RZ, daher hat der lokale Admin (ich) nicht Zugriff auf alle Funktionen Zur Identifikation der Benutzer, die eine Datei im Zugriff haben, wurde vom RZ eine (verschlüsselte) Batch-Routine geschrieben, welche die enstsprechenden Dateien und zugehörigen User auflistet. ich benötige aus dieser Datei aber nur die User, welche eine bestimmte Datei sperren.

Moin zusammen,
ich hol mal ein wenig aus. Wir setzen ein C/S-Kassenverfahren (IVR/Mach) ein, welches Daten von einem Server beim RZ auf einen lokalen Server bei uns überträgt. Diese Übertragung erfolgt alle drei Stunden zur vollen Stunde. Von diesem Server werden die Daten wiederum zeitgesteuert (5 Minuten nach der vollen Stunde) auf unseren Datenserver übertragen. Die Übertragung RZ - Server bei uns funktioniert immer. Die Übertragung Server bei uns - Datenserver nur manchmal (Grund siehe weiter unten). Grund der Übertragung ist der, daß in dem Verfahren Rechnungen erfaßt werden, die in einem anderen Verfahren gebucht werden. Dazu wird eine Excel-Tabelle erstellt, auf die mit einem Exel-Formular zugegriffen wird, um anhand der Rechnungsnummer schon die Grunddaten (Anschrift, Bankverbindung, etc.) zur Verfügung zu stellen. Hat nun ein Benutzer das Formular im Zugriff, während der "Update" der Excel-Tabelle läuft, findet keine Übertragung statt, da die Datei "in Benutzung" ist. Im Ergebnis können andere Benutzer nun nicht weiterarbeiten, da die neuen Datensätze noch nicht überspielt wurden und die Abfragen aufgrund der fehlenden Rechnungsnummer ins Leere laufen.
Früher konnte ich dann auf den Server gehen, dort die Geöffneten Dateien einsehen und die Benutzer trennen, die Überspeilung manuell durchführen und alle waren fröhlich. Heute funktioniert das nicht mehr (mangels Berechtigungen auf dem Server) und ich muß mich mit dieser Datei zufrieden geben. Die Datei hat mehrere 100 Zeilen und es ist relativ müßig, die mit der Hand am Arm durchzuforsten. Nun sucht isch eine weniger aufwändige Lösung, als die manuelle Suche.

Die Datei hat folgenden Aufbau:

01.
Files opened remotely on server1: 
02.
 
03.
[1342177289] E:\Daten\M2\FB1\Abt 1.1 
04.
    User:   M2MUELL 
05.
    Locks:  0 
06.
    Access: Read  
07.
[1677721620] E:\Daten\M2\FB3\Abt 3.1\M2STEMB\Vorlagen\Normal.dotm 
08.
    User:   M2STEMB 
09.
    Locks:  0 
10.
    Access: Read Write  
11.
[1744830489] E:\apps\scowi_5_11\exe\boost_regex-vc71-mt-gd-1_33.dll 
12.
    User:   M2GERLA 
13.
    Locks:  0 
14.
    Access:  
15.
.........
Nun war meine Überlegung, ich durchsuche diese Datei mit FIND nach dern Zeilen, in denen der Gesuchte Dateiname vorkommt.
01.
FINF /i /n "export\auswertung.xls" openfiles.txt
Dieser Befehl liefert als Ergebnis:
01.
 
02.
---------- OPENFILES.TXT 
03.
[107][-603979437] E:\Export\Auswertung.xls 
04.
[131][1879048659] E:\Export\Auswertung.xls 
05.
[323][805307363] E:\Export\Auswertung.xls
Als nächsten Schritt wollte ich mit der Zeilennummer als Skip-Argument einen FOR /F-Befehl ausführen lassen. Schöne Idee, leider so nicht nutzbar, da der skip-Parameter nur ein einstelliges Argument akzeptiert.

So, und schon fangen meine Probleme an:
Wie kann ich
- die eine Datei lesen,
- die Zeilennummer ermitteln,
- diese Zeilennummer "skipfähig" aufbereiten,
- damit in eine zweite Datei gehen,
- die zugehörige Folgezeile ermitteln
- den Usernamen aus der Folgezeile ermitteln
- das Ergebnis in eine weitere Datei schreiben
- und dann zurück zur ersten Datei
- dort die nächste Zeilennummer lesen
- und das Spiel von neuem beginnen.

und vor allem, alles mit puren Batch-Mitteln.

Mir würde ja schon reichen, wenn ich aufgrund der FIND-Abfrage aus der Datei die Zeile n und Zeile n+1 extrahieren könnte, damit ich den User angelistet bekomme.

Vielleicht sehe ich aber im Augenblick den Wald vor lauter Bäumen nicht und es gibt einen ganz anderen Weg. Würde mich über Hinweise diesbezüglich freuen.

Gruß J chem
Mitglied: bastla
13.05.2011 um 10:29 Uhr
Hallo Jochem!

Aufgrund der beschriebenen Struktur (jeweils nur ein User / Block, keine Zeile beginnt mit ":") etwa so:
01.
@echo off & setlocal 
02.
set "Ein=openfiles.txt" 
03.
set "Aus=Users.txt" 
04.
set "Gesucht=export\auswertung.xls" 
05.
set "Gesucht2=User:" 
06.
 
07.
del "%Aus%" 2>nul 
08.
set "Ausgabe=" 
09.
for /f "tokens=1* delims=:" %%i in ('findstr /i /n "^" "%Ein%"') do call :ProcessLine "%%j" 
10.
goto :eof 
11.
 
12.
:ProcessLine 
13.
echo %1|find /i "%Gesucht%">nul && (set "Ausgabe=%~1" & goto :eof) 
14.
if not defined Ausgabe goto :eof 
15.
echo %1|find /i "%Gesucht2%">nul && ( 
16.
    for /f "tokens=1*" %%i in (%1) do echo %Ausgabe%	%%j 
17.
    set "Ausgabe=" 
18.
)>>"%Aus%" 
19.
goto :eof
In Zeile 16 befindet sich vor %%j ein <TAB> ...

[Nachtrag]Um aber auch Deine ursprüngliche Idee umzusetzen:
01.
@echo off & setlocal 
02.
set "Ein=openfiles.txt" 
03.
set "Aus=Users.txt" 
04.
set "Gesucht=export\auswertung.xls" 
05.
set "Gesucht2=User:" 
06.
 
07.
del "%Aus%" 2>nul 
08.
set "Ausgabe=" 
09.
for /f "tokens=1-2* delims=[]" %%i in ('find /i /n "%Gesucht%"^<"%Ein%"') do ( 
10.
    set "Ausgabe=" 
11.
    for /f "tokens=2" %%a in ('more +%%i "%Ein%"') do if not defined Ausgabe ( 
12.
        echo [%%j]%%k	%%a 
13.
        set Ausgabe=true 
14.
15.
)>>"%Aus%"
[/Nachtrag]

Grüße
bastla
Bitte warten ..
Mitglied: Jochem
13.05.2011 um 11:35 Uhr
Moin bastla,

fühl Dich geknutscht, gehätschelt, gesonstwas. Habs gerade mal so in eine Batch-Datei gehämmert und es läuft *freu*. jetzt werde ich mir das mal in aller Ruhe zu Gemüte führen und nachvollziehen, was Du so gebastelt hast und wo meine diesbezüglichen Lücken aufgetreten sind. Danke vielmals.

Gruß J chem
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Variablen außerhalb einer For Schleife abfragen
gelöst Frage von Michael-24Batch & Shell3 Kommentare

Hallo miteinander, ich habe ein Problem, bei dem ich überhaupt nicht weiter komme. Ich möche ein kleine Batchdatei erstellen, ...

Microsoft
MSSQL Profiler: Abfragen ohne Parametrisierung finden
Frage von SeaStormMicrosoft

Guten Tag zusammen, kennt jemand eine Möglichkeit per SQL Profiler (oder was auch immer) Abfragen vom SQL Server zu ...

Batch & Shell
For-Schleife Bedingung "nicht erfüllt" abfragen
Frage von BatchNeulingBatch & Shell8 Kommentare

Hallo zusammen, dieses Forum hat mir schon des öteren weiter geholfen. Leider finde ich auch nach intensiver Suche noch ...

Batch & Shell
Abfrage ERRORLEVEL springt aus der FOR Schleife
gelöst Frage von GalindieselBatch & Shell8 Kommentare

Liebe Gemeinde, ich habe eine kleine batch geschrieben, die aus einer liste (IPs) heraus Laufwerke mappen soll, darauf dann ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 3 StundenVerschlüsselung & Zertifikate

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 14 StundenWindows 102 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 16 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner3 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...