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

Variablen der ersten 5 zeilen ALLER Txt datein in einem Verzeichnis wiedergeben

Frage Entwicklung Batch & Shell

Mitglied: DONNobre

DONNobre (Level 1) - Jetzt verbinden

27.05.2011 um 19:28 Uhr, 3367 Aufrufe, 20 Kommentare

Hallo zusammen
Also was ich brauch möchte ist:
diese batch in dem verzeichnis alle txt datein suchen. von der ersten Txt datei zeile 1-5 auslesen und als var speichern
jetzt pingt er die ip an und sagt ob er online ist oder nicht
ab gehts zur 2ten txt datei. "" Problem ist das die txt dateien keinen festen namen haben sondern aus RechnernamenUsername.txt bestehen

@echo off & setlocal

::Aktuelles Verzeichnis
cd /d "%~dp0"
Set AKT=%CD%
cd %AKT%
set AKT=%CD%

::dateityp
set "AltTyp=txt"

:: hier soll er eigendlich alle Txt datein im
:: aktuellen verzeichniss nehmen
:: und irgendwo hier steckt der wurm drin da er dies nicht tut. wo ist mein denkfehler?
for %%b in ('dir /b /od "%AKT%\*.%AltTyp%"') do call :Abfrage %%b


:Abfrage
:: hier liest er die werte aus die in der zeile 1-5 in jeder Txt
:: datein stehen
:: das sind PCname,Username,Datum,Zeit,WANIP
:: und diesere werden in variablen gespeichert
For %%a in (%%b) do (
Set /a "n=1"
call :Schleife
set PCNAME=%Var%

Set /a "n=2"
call :Schleife
set USERNAME=%Var%

Set /a "n=3"
call :Schleife
set DATUM=%Var%

Set /a "n=4"
call :Schleife
set ZEIT=%Var%

Set /a "cnt=1
Set /a "n=5"
call :Schleife
set WANIP=%Var%


:: jetzt soll er die werte die varaiblen nehmen und ausgeben
ping /n 1 %WANIP%
if errorlevel 1 goto nichtda
echo PC ist DA
call :WER
:: wenn er hier ferig ist soll er wieder zur ersten abfrage gehen
:: also der Txt abfrage und zur nächsten datei gehen
)

:nichtda
echo PC ist NICHT da
call :WER
goto :eof

:Schleife
Set /a "cnt=1
for /F "delims=; Tokens=*" %%i in (%%b) do call :setvarFixLine %n% "%%i"
goto :eof

:Wer
echo.
echo "%USERNAME% mit %PCNAME% am %DATUM% um %ZEIT%"
echo.
echo "mit der IP: %WANIP% JETZT IST %TIME%"
ping -n 1 -w 3000 1.2.3.4>nul


:setvarFixLine
If %cnt%==%1 Set "Var=%~2"
Set /a "cnt+=1"
goto :eof

:eof
Mitglied: Clijsters
27.05.2011 um 20:00 Uhr
REM Hallo-Gruß o.Ä.

FOR /F ["Optionen"] %Variable IN (Dateiensatz) DO Befehl [Parameter]

So spuckte es mir zumindest die Hilfe von Win aus...

REM Tschüß-Gruß

REM Dominique

:eof
Bitte warten ..
Mitglied: DONNobre
27.05.2011 um 20:15 Uhr
ne selbst wenn ich es nach dem muster mache geht es leider nicht ... irgendwie übergebe ich die var falsch nur hab keine idee wo
Bitte warten ..
Mitglied: Friemler
27.05.2011 um 20:15 Uhr
Hallo DONNobre,

Du programmierst, wie Du Texte schreibst...

Für den ersten Teil, das Einlesen der Variablen, mache ich mal folgenden Vorschlag. Hole Dir daraus Anregungen zur Lösung Deines anderen Problems. Oder aus meinem Tutorial zur FOR-Schleife.
01.
@echo off 
02.
 
03.
setlocal 
04.
 
05.
::Aktuelles Verzeichnis 
06.
cd /d "%~dp0" 
07.
Set "AKT=%CD%" 
08.
 
09.
::dateityp 
10.
set "AltTyp=txt" 
11.
 
12.
 
13.
set "Vars=PCName UserName Datum Zeit WANIP" 
14.
 
15.
for /f "delims=" %%f in ('dir /b /od "%AKT%\*.%AltTyp%" 2^>NUL') do ( 
16.
  for /f "tokens=1* delims=:" %%k in ('findstr /n "^" "%%f"') do ( 
17.
    if %%k leq 5 ( 
18.
      set "line=%%l" 
19.
      call :SetVar %%k 
20.
21.
22.
  call :ProcessData 
23.
24.
 
25.
exit /b 
26.
 
27.
 
28.
:SetVar 
29.
for /f "tokens=%1" %%v in ("%Vars%") do set "%%v=%line%" 
30.
exit /b 
31.
 
32.
 
33.
:ProcessData 
34.
echo %PCName% 
35.
echo %UserName% 
36.
echo %Datum% 
37.
echo %Zeit% 
38.
echo %WANIP% 
39.
exit /b
Gruß
Friemler
Bitte warten ..
Mitglied: DONNobre
27.05.2011 um 20:38 Uhr
das man mehrere var in einer zeile programieren kann "set "Vars=PCName UserName Datum Zeit WANIP" war mit komplett neu
danke erstmal sieht klar viel besser aus

ich hab die batch noch nicht getestet aber es sieht echt nett aus ...
wobei mit auf den ersten blick auffält das er nur einmal die ganzen daten ausgibt
Bitte warten ..
Mitglied: Friemler
27.05.2011 um 20:42 Uhr
Hallo DONNobre,

Zitat von DONNobre:
wobei mit auf den ersten blick auffält das er nur einmal die ganzen daten ausgibt

Deine Rechtschreibung und der Satzbau wird besser .... mein Script auch. Der Fehler ist behoben.

Zitat von DONNobre:
das man mehrere var in einer zeile programieren kann "set "Vars=PCName UserName Datum Zeit WANIP" war mit komplett neu

Ähem, ich "programmiere" damit keine Variablen. Ich definiere nur die Variable Vars, die die Namen aller zu setzenden Variablen enthält. Dieser String wird in Zeile 29 über den Parameter %1 inidiziert und die korrespondierende Variable gesetzt.

Gruß
Friemler
Bitte warten ..
Mitglied: DONNobre
27.05.2011 um 20:57 Uhr
JA ich weiß meine Rechtschreibung ist nicht immer die beste ich lese mir nicht immer ein 2tes mal durch was ich geschrieben habe. Ich sitze aber auch nicht vor der Tastatur. Aber ich gelobe besserung

also mit sagt er ... datei nicht gefunden ....
Bitte warten ..
Mitglied: Clijsters
27.05.2011 um 21:00 Uhr
Ich sitze aber auch nicht vor der Tastatur

Also ich finds lustig.....
Bitte warten ..
Mitglied: Friemler
27.05.2011 um 21:02 Uhr
Hallo DONNobre,

Zitat von DONNobre:
also mit sagt er ... datei nicht gefunden ....

dann hat Du das Script nicht aus dem Verzeichnis gestartet, in dem die txt-Dateien liegen oder dort gibt es keine txt-Dateien.

Gruß
Friemler
Bitte warten ..
Mitglied: DONNobre
27.05.2011 um 21:03 Uhr
nun ist auch so bin gerade über Teamviewer drin. Legt ihr echt so viel wert auf die rechtschreibung?
Bitte warten ..
Mitglied: DONNobre
27.05.2011 um 21:07 Uhr
öhm doch .. sind 2 .txt dateien drin
Bitte warten ..
Mitglied: Friemler
27.05.2011 um 21:07 Uhr
Zitat von DONNobre:
Legt ihr echt so viel wert auf die rechtschreibung?

Hauptsache, man braucht keinen Descrambler zum Lesen

Gruß
Friemler
Bitte warten ..
Mitglied: Friemler
27.05.2011 um 21:10 Uhr
Hallo DONNobre,

  • Hast du den Quelltext aus dem Fenster, das erscheint, wenn man auf Quelltext oben rechts über der Box mit dem Code klickt, kopiert?
  • @echo off raus
  • Script aus einem Konsolenfenster starten und Scriptlauf verfolgen

Gruß
Friemler
Bitte warten ..
Mitglied: DONNobre
27.05.2011 um 21:20 Uhr
deswegen ja hatte ich schon gemacht

C:\Batch>setlocal
C:\Batch>cd /d "C:\Batch\"
C:\Batch>Set AKT=C:\Batch
C:\Batch>set "AltTyp=txt"
C:\Batch>set "Vars=PCName UserName Datum Zeit WANIP"
C:\Batch>set /a idx=1
C:\Batch>for /F "delims=" %f in ('dir /b /od "C:\Batch \*.txt"') do (for /F "use
backq delims=" %l in ("%f") do (
set "line=%l"
call :SetVar
set /a idx+=1
) )
Datei nicht gefunden

C:\Batch>echo
ECHO ist eingeschaltet (ON).
C:\Batch>echo DON
Daniel R. Nobre
C:\Batch>echo
ECHO ist eingeschaltet (ON).
C:\Batch>echo
ECHO ist eingeschaltet (ON).
C:\Batch>echo
ECHO ist eingeschaltet (ON).
C:\Batch>pause
Drücken Sie eine beliebige Taste . . .


und eine txt mit inhalt ist auch vorhanden
PC
DON
21.05.2011
19:00:44,90
85.176.34.11
Bitte warten ..
Mitglied: Friemler
27.05.2011 um 21:27 Uhr
Hallo DONNobre,

benutze doch bitte die Codeformatierung, das lässt sich auch noch nachträglich machen .

Da hat sich in Zeile 3 der Ausgabe ein böses Leerzeichen an den Pfad angehängt, deshalb lautet die Suchmaske "C:\Batch \*.txt". Kopiere Dir nochmal den Script-Code, ich habe in der entsprechenden Zeile "Gegenmaßnahmen" eingebaut.

Gruß
Friemler
Bitte warten ..
Mitglied: DONNobre
27.05.2011 um 21:36 Uhr
du bist der hammer
als du es schriebst viel es mir auch auf
in der zeile
Set AKT=%CD%
hatte ich zum schluß ein leerzeichen .. das natürlich übernommen wurde.

batch gestartet und funkt.
ABER er liest nur 1ne txt und beendet sich dann
Bitte warten ..
Mitglied: Friemler
27.05.2011 um 21:40 Uhr
Hallo DONNobre,

Zitat von DONNobre:
ABER er liest nur 1ne txt und beendet sich dann

tja, dann die obigen Schritte zum debuggen wiederholen...

[EDIT]
Erwarte nicht, dass er Dir den Inhalt beider Dateien ausgibt ! Wenn eine Datei ausgelesen wurde, muss nach Zeile 21 ein Unterprogramm aufgerufen werden, um die Eingabe zu verarbeiten!
[/EDIT]

[EDIT2]
Unterprogramm ist eingebaut.
[/EDIT2]

Gruß
Friemler
Bitte warten ..
Mitglied: DONNobre
27.05.2011 um 22:09 Uhr
Nun genau das war ja mein "eigendliches" Problem

ausser das unsaubere Programieren
Bitte warten ..
Mitglied: Friemler
27.05.2011 um 22:13 Uhr
Hallo DONNobre,

siehe mein letztes Posting.

Gruß
Friemler
Bitte warten ..
Mitglied: DONNobre
27.05.2011 um 22:21 Uhr
Super ... wenn du eine frau währest würde ich dich glatt heiraten
Bitte warten ..
Mitglied: Friemler
27.05.2011 um 22:23 Uhr
Nee, lass' mal. Ich liebe meine Freiheit
Bitte warten ..
Ähnliche Inhalte
PHP
TXT Datei auslesen und bestimmte Zeilen in Variable setzen
gelöst Frage von 126594PHP11 Kommentare

Hallo zusammen, vorweg muss ich sagen, ich bin (bis jetzt) absoluter Neuling was PHP angeht. Ich will aus einer ...

Batch & Shell
Batch - Bestimmter Inhalt einer Zeile aus einer txt oder ini als Variable
gelöst Frage von element22Batch & Shell2 Kommentare

Hallo zusammen, leider finde ich den Fehler nicht. Na gut, vielleicht sitzt er vorm Monitor, aber das ist etwas ...

Batch & Shell
Batch: Txt Datei mit mehreren Zeilen auslesen, wandeln und hintereinander wiedergeben
gelöst Frage von MentacorBatch & Shell4 Kommentare

Hallo zusammen, Ich habe eine Frage zu einem Problem mit meiner Batch Meine Frage: Ist es möglich aus einer ...

Windows 7
Wie kann ich eine Zeile aus hunderten .rtf datein zusammenfassen?
Frage von damien60313Windows 711 Kommentare

Guten Tag liebe leutz, ich brauche eure Hilfe. Ich stehe nämlich vor folgendem Problem: Ich habe hunderte .rtf Datein. ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 19 StundenBatch & Shell8 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 21 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Windows Server
Sichere Remote Desktop Verbindung wie?
gelöst Frage von nuss33Windows Server11 Kommentare

Hallo zusammen, eins vorweg: Ich besitze einen privaten Windows Server 2008 R2 zu Hause im Netzwerk er wird nicht ...