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

For-Schleife Batch

Frage Entwicklung Batch & Shell

Mitglied: Guppinator

Guppinator (Level 1) - Jetzt verbinden

28.01.2009, aktualisiert 18.10.2012, 5209 Aufrufe, 13 Kommentare

Hallo,
ich habe ein kleines Batch-Tool gemacht, jedoch funktioniert die for-Schleife nicht. Wie kann ich mein kleines Problem in der 3. und 4. Zeile lösen?

LG

01.
@echo off 
02.
set "ho=Platz" 
03.
FOR /L %%t IN (16,1,27) DO ( 
04.
FOR /L %%x IN (1,1,11) DO ( 
05.
if exist %systemdrive%\Log\*.txt del /F /S /Q %systemdrive%\Log\*.txt 
06.
if not exist %systemdrive%\Log md %systemdrive%\Log 
07.
if exist \\%ho%%%t\C$\ rename \\%ho%%%t\C$\Neu.txt Neu%%x.fcx && xcopy /C /Q /H \\%ho%%%t\C$\Neu%%x.fcx %systemdrive%\Log 
08.
09.
10.
pause > NUL 
11.
cls 
12.
echo Schritt 1 erledigt! 
13.
ping -n 2 localhost > NUL 
14.
cls 
15.
cd %systemdrive%\Log 
16.
 
17.
FOR /L %%u IN (1,1,12) DO ( 
18.
FOR %%b IN (Neu%%u.fcx) DO type %%b 
19.
echo. 
20.
pause > NUL

[Edit Biber] Inhaltlicher Doppelpost zu Benutzernamen im Netzwerk auslesen.
Und auch noch WTHF in "Tools & Utilities" gesetzt.
Ich verschiebe es erstmal nach "Batch & Shell".
[/Edit]
Mitglied: 60730
28.01.2009 um 10:23 Uhr
Moinsen,

Zeile 5 & 6 könnte doch auch außerhalb der beiden Schleifen liegen.
Lediglich Zeile 7 ist "sinnvoll" in der Schleife, da nur dort auch ein "geschleifter Zähler" benutzt wird.

Ich schau mir das nacher nochmal an, und bis dahin trink ich erst mal einen Kaffee.
Aber so wie ich es sehe, solltest du entweder (das hab ich im letzten Thread noch nicht verstanden) - die Logs so nennen, wie den Zähler des jeweiligen Systems, oder den Log Zähler in einer set /a Schleife hochzählen.

Gruß
Bitte warten ..
Mitglied: Guppinator
28.01.2009 um 13:10 Uhr
Die Datei, die beim Autostart gestartet wird:

'name.bat'
Der Inhalt der Datei:

01.
@echo off 
02.
echo %username% > %computername%.txt 
03.
rename %computername%.txt %computername%.fcx 
04.
exit
Meine Datei:

'einsammeln.bat'
Der Inhalt der Datei:

01.
@echo off 
02.
if not exist %systemdrive%\Log md %systemdrive%\Log 
03.
if exist %systemdrive%\Log\*.fcx del /F /S /Q %systemdrive%\Log\*.fcx 
04.
set "ho=Platz" 
05.
FOR /L %%t IN (16,1,27) DO ( 
06.
if exist \\%ho%%%t\C$\ xcopy /C /Q /H \\%ho%%%t\C$\*.fcx %systemdrive%\Log 
07.
08.
pause > NUL 
09.
cls 
10.
echo Schritt 1 erledigt! 
11.
ping -n 2 localhost > NUL 
12.
cls 
13.
cd %systemdrive%\Log 
14.
set "ho=Platz" 
15.
FOR /L %%i IN (16,1,27) DO ( 
16.
FOR %%y IN (%ho%%%i.fcx) DO echo %%y 
17.
FOR %%b IN (%ho%%%i.fcx) DO type %%b 
18.
19.
pause > NUL
Müsste so funktionieren, oder?
Bitte warten ..
Mitglied: bastla
28.01.2009 um 14:31 Uhr
Hallo Guppinator!
Müsste so funktionieren, oder?
Ließe sich selbst testen, oder?
Für Deine "name.bat" würde eigentlich eine Zeile genügen:
@echo %username%>C:\%computername%.fcx
Im Gegenzug könntest Du dann die Zeile 6 der "einsammeln.bat" etwas sicherer machen:
if exist \\%ho%%%t\C$\*.fcx xcopy /C /Q /H \\%ho%%%t\C$\*.fcx %systemdrive%\Log
Schließlich sollte für die Zeilen 14 bis 17 genügen:
FOR /L %%i IN (16,1,27) DO if exist %ho%%%i.fcx (echo %ho%%%i.fcx & type %ho%%%i.fcx)
Auch diese Zeilen solltest (im Fall des Falles) Du testen (ich hab's jedenfalls nicht gemacht ).

Grüße
bastla
Bitte warten ..
Mitglied: Guppinator
28.01.2009 um 16:17 Uhr
Ja, auf jeden Fall schonmal Danke für die Antworten
Also ich programmiere das nicht für mich, sondern ein Lehrer meiner Schule fragte mich, ob es möglich sei so ein Programm zu programmieren. Also habe ich mich drangesetzt. Ich kann das jedoch nicht vorher ausprobieren bevor ich mir nicht 100% sicher bin, dass es geht. Weil wenn ich es ausprobieren wollte müsste auf alle Rechner im Computerraum ein neues Image aufgespielt werden, da Windows bei uns auf der Schule bei jedem starten von einem Image neu gestartet wird (d.h. alle zuvor erstellten Daten gehen verloren).
Bitte warten ..
Mitglied: bastla
28.01.2009 um 16:50 Uhr
Hallo Guppinator!

Da Du ja Admin-Rechte hast, sollte es eigentlich kein Problem sein, eine passende .fcx-Datei bei laufendem Rechner (remote) zu erstellen und dann das "Einsammeln" zu testen - wenn dabei nur einige Geräte eingeschaltet sind, wirst Du vielleicht auch noch auf die Idee kommen, vor dem "if exist" ein "ping" zu platzieren ...

Grüße
bastla
Bitte warten ..
Mitglied: Guppinator
28.01.2009 um 17:12 Uhr
Hi bastla,

Du meinst:
01.
ping -t -n 1 Host
?
Ich kenne mich mit 'Ping' nicht so aus... Was würde mir das bringen, oder wie genau würdest Du das mit in mein Script einbinden?

LG
Bitte warten ..
Mitglied: 60730
28.01.2009, aktualisiert 18.10.2012
Servus Guppi,

jetzt schaust du dir bitte nochmal diesen Link genau an:

Das war / ist eine Anleitung die nicht nur funktioniert, sondern auch zeigen soll(te), wie man mit Haus & Boardmitteln genau das hinbekommt, was du haben willst - gut die Fernsteuerung willst du nicht, du willst nur "den Rest".
Und das kannst du dann auch gerne verändern, anpassen und bitte auch "lernen" wie das "komplexe" denn so läuft. - Den zum lernen war die Anleitung auch gedacht.
Auch wenn die Überschrift "irreführend ist" und es zig bessere Anleitungen zum Thema auf Administrator gibt - schaus dir bitte trotzdem an

Gruß
Bitte warten ..
Mitglied: bastla
28.01.2009 um 17:31 Uhr
Hallo Guppinator!
Was würde mir das bringen,
Kürzere Wartezeiten, wenn Du bereits vorweg damit feststellst, dass ein Rechner derzeit nicht erreichbar ist.
oder wie genau würdest Du das mit in mein Script einbinden?
Vor Zeile 6; "wie" hängt von den verwendeten BS ab ...

Grüße
bastla
Bitte warten ..
Mitglied: Guppinator
28.01.2009 um 19:21 Uhr
hi bastla,

das BS ist bei uns Windows XP HE.

@TimoBeil: Wir haben schon ein solches Programm auf den Schulrechnern, jedoch kann dieses Programm nicht den angemeldeten User anzeigen und das Tool hat einfach zu viele Funktionen. Ich möchte gerne ein Programm mit nur einer Funktion haben und diese Funktion soll eben nur das anzeigen vom Computer- und Benutzernamen sein. Aber vielen Dank für den Vorschlag! Ausprobiert habe ich das Tool, jedoch hat es bei mir nicht funktioniert. Ich gebe einen PC im Netzwerk an und das Programm macht nichts weiter.

LG
Bitte warten ..
Mitglied: 60730
28.01.2009 um 19:40 Uhr
Hai Guppi - oder darf ich schon Thunfisch sagen?

Remote.cmd von besagtem Link und rem Remote.cmd mal beide ausgedruckt nebeneinander legen.

Ausprobiert habe ich das Tool, jedoch hat es bei mir nicht funktioniert.
Ähh das sind zwei - eines (Info.cmd), das die Daten erzeugt und eines (Remote.cmd) zum auslesen.

Also nochmal zurück...

Remote.cmd und die Rem dazu.

Zeile 19 -26 - dort ist genau das beschrieben, was Bastlas Tipp war.
Bzw. eigentlich nur in Zeile 20, aber wir wollen ja irgendwann mal dieses Thema abhaken und nicht Zeile für Zeile neu erfinden.

Gruß
Bitte warten ..
Mitglied: Guppinator
28.01.2009 um 20:19 Uhr
Sorry, kann sein, dass es bei dir geht, bei mir geht es auf jeden fall nicht...

Aber was bringt mir bitte ping -n 1 Host?
Den Befehl habe ich hier ja bereits gepostet. Aber ich wollte ja wissen, was mir dieser Befehl bringt, und wie ich ihn genau benutzen kann. Bringts der Befehl überhaupt, wenn ich schon eine Überprüfung der Hosts gemacht habe? Siehe Zeile 6.

LG

01.
@echo off 
02.
if not exist %systemdrive%\Log md %systemdrive%\Log 
03.
if exist %systemdrive%\Log\*.fcx del /F /S /Q %systemdrive%\Log\*.fcx 
04.
set "ho=Platz" 
05.
FOR /L %%t IN (16,1,27) DO ( 
06.
if exist \\%ho%%%t\C$\*.fcx xcopy /C /Q /H \\%ho%%%t\C$\*.fcx %systemdrive%\Log 
07.
08.
pause > NUL 
09.
cls 
10.
echo Schritt 1 erledigt! 
11.
ping -n 2 localhost > NUL 
12.
cls 
13.
cd %systemdrive%\Log 
14.
set "ho=Platz" 
15.
FOR /L %%i IN (16,1,27) DO ( 
16.
FOR %%y IN (%ho%%%i.fcx) DO echo %%y && FOR %%b IN (%ho%%%i.fcx) DO type %%b 
17.
18.
cls 
19.
echo Daten sichern? (y/n) 
20.
set /p pu= 
21.
if /I "%p%"=="y" goto y 
22.
if /I "%p%"=="n" goto n 
23.
:y 
24.
if not exist %systemdrive%\Log\history md %systemdrive%\Log\history 
25.
set "ho=Platz" 
26.
FOR /L %%f IN (16,1,27) DO ( 
27.
if not exist %systemdrive%\Log\history\%ho%%%f md %systemdrive%\Log\history\%ho%%%f 
28.
xcopy /C /Q /H %ho%%%f.fcx %systemdrive%\Log\history\%ho%%%f && rename %systemdrive%\Log\history\%ho%%%f\%ho%%%f.fcx %date%%ho%%%f.fcx 
29.
cls 
30.
echo Speichern abgeschlossen! 
31.
ping -n 2 localhost > NUL 
32.
exit 
33.
:n 
34.
exit 
35.
36.
pause > NUL
Bitte warten ..
Mitglied: 60730
28.01.2009 um 20:30 Uhr
*schnief*

Zeile 21: if /I "%p%"=="y" goto y
Zeile 22: :y

er geht immer von 21 auf 22 - egal, was du da eintippst.
Zeile 06

Aber was bringt mir bitte ping -n 1 Host

Ping - versucht lediglich eine Antwort auf ganz unterer Layer Basis vom Ziel zu bekommen - der kommt sehr schnell / oder auch nicht.

if exist \\%ho%%%t\C$ - ist da schon "fieser" - denn da zum erfüllen von "exist" muß sich das Script ja auch erstmal mit dem Ziel (das vielleicht) gar nicht an ist - mit dessen c$ verbinden.

ping -n 1%ho%%%t && if exist \\%ho%%%t\C$ usw. ist das was du als "selbstschreibener" Programmierer eigentlich daraus machen solltest, was Bastla dir geraten hat.

Mittlerweile darfst du gerne ein
Rem [c] By Bastla
Rem [c] By Biber
an den Header "deines" Programms schreiben

gruß
Bitte warten ..
Mitglied: Guppinator
28.01.2009 um 21:29 Uhr
So, ich habe das Programm jetzt nochmal überarbeitet.....

01.
@echo off 
02.
if not exist %systemdrive%\Log md %systemdrive%\Log 
03.
if exist %systemdrive%\Log\*.fcx del /F /S /Q %systemdrive%\Log\*.fcx 
04.
set "ho=Platz" 
05.
FOR /L %%t IN (16,1,27) DO ( 
06.
ping -n 1 %ho%%%t && if exist \\%ho%%%t\C$\*.fcx xcopy /C /Q /H \\%ho%%%t\C$\*.fcx %systemdrive%\Log 
07.
08.
cls 
09.
echo Schritt 1 erledigt! 
10.
ping -n 2 localhost > NUL 
11.
cls 
12.
cd %systemdrive%\Log 
13.
set "ho=Platz" 
14.
FOR /L %%i IN (16,1,27) DO ( 
15.
FOR /L %%l IN (%ho%%%i.fcx) DO echo %%l && FOR /L %%b IN (%ho%%%i.fcx) DO type %%b 
16.
17.
cls 
18.
:wdh 
19.
echo Daten sichern? (y/n) 
20.
set /p pu= 
21.
if /I "%pu%"=="y" goto y 
22.
if /I "%pu%"=="n" goto n 
23.
goto wdh 
24.
:y 
25.
if not exist %systemdrive%\Log\history md %systemdrive%\Log\history 
26.
set "ho=Platz" 
27.
FOR /L %%f IN (16,1,27) DO ( 
28.
if not exist %systemdrive%\Log\history\%ho%%%f md %systemdrive%\Log\history\%ho%%%f 
29.
xcopy /C /Q /H %ho%%%f.fcx %systemdrive%\Log\history\%ho%%%f && rename %systemdrive%\Log\history\%ho%%%f\%ho%%%f.fcx %date%%ho%%%f.fcx 
30.
31.
cls 
32.
echo Speichern abgeschlossen! 
33.
ping -n 2 localhost > NUL 
34.
exit 
35.
:n 
36.
exit

Achsoo, das mit dem Copyright muss ich gleich noch dazu schreiben
Bist du so mit dem Quelltext zufrieden?

LG
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch Problem bei einer For Schleife (2)

Frage von Juergen42 zum Thema Batch & Shell ...

Batch & Shell
Batch: Variable Expansion in einer FOR-Schleife (9)

Frage von .Sessl zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Probleme mit Dateipfaden in for-Schleife (1)

Frage von Jonas1806 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Schleife als FOR-SCHLEIFE (2)

Frage von mp2711 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...