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

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, 3319 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 ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Batch & Shell
gelöst In Batchdatei Variablen befüllen - mit Werten aus einer TXT-Datei (6)

Frage von donnyS73lb zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell: Variablen aus .txt Dateien heraus ausgeben (5)

Frage von Tobiased zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (29)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

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

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...