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 Schleife mit Exist

Mitglied: casi4711

casi4711 (Level 1) - Jetzt verbinden

25.04.2019 um 13:08 Uhr, 799 Aufrufe, 18 Kommentare, 2 Danke

Hallo an alles fleißigen Scripter,

ein Script soll eine Range von IPs abfragen und checken, ob ein bestimmtes Verzeichnis existiert, leider geht nicht so wie ich mir das vorgestellt habe, Wie muss es richtig heißen?


@Echo off
for /l %%f in (170, 1, 173) do :Check
PAUSE

:Check
if exist \\192.168.100.%ff\c$\xy\ echo available xy
ELSE GOTO end
:end
PAUSE


Liebe Grüße Chris
Mitglied: 139374
LÖSUNG 25.04.2019, aktualisiert um 13:21 Uhr
Moinsens.
why the hell kommst du auf %ff??
01.
@echo off
02.
for /l %%f in (170, 1, 173) do call :Check %%f
03.
PAUSE
04.
goto :eof
05.
:Check
06.
if exist "\\192.168.100.%1\c$\xy" echo xy available on 192.168.100.%1
Tschö.

Wie muss es richtig heißen?
Man braucht es eigentlich nur nachlesen
https://ss64.com/nt/for.html
https://ss64.com/nt/call.html (Abschnitt: CALL a subroutine (:label))
Bitte warten ..
Mitglied: casi4711
25.04.2019 um 13:37 Uhr
Das %%f ist die variable, die an vierter Stelle der IP durchlaufen wird, geht bei mir sonst auch immer ?!?
Bitte warten ..
Mitglied: 139374
25.04.2019, aktualisiert um 13:42 Uhr
Zitat von casi4711:

Das %%f ist die variable,
%%a ja aber nicht %ff wie du oben ausgeschrieben hast!
die an vierter Stelle der IP durchlaufen wird, geht bei mir sonst auch immer ?!?
Du beendest die Schleife bereits in Zeile 2 und du übergibst %%f ja gar nicht an die Subroutine :Check, und in der Unterroutine wird der Parameter mit %1 angespochen!

Ohne Subroutine sieht das so aus, dann kannst du auch direkt mit %%f arbeiten:
01.
for /l %%f in (170, 1, 173) do (
02.
    if exist "\\192.168.100.%%f\c$\xy" echo xy available on 192.168.100.%%f
03.
)
Bitte warten ..
Mitglied: casi4711
25.04.2019 um 13:48 Uhr
Na ganz großes Kino, meine so hatte ich es vorher auch zwischenzeitlich und da lief es nicht. na vielleicht was vergessen oder der Dreher war da auch schon drin. Ok danke Dir noch mal und schöne Restwoche

Liebe Grüße


Chris
Bitte warten ..
Mitglied: 139374
25.04.2019, aktualisiert um 13:51 Uhr
na vielleicht was vergessen oder
Klaaaaaaaar ....
Bitte warten ..
Mitglied: casi4711
25.04.2019 um 14:29 Uhr
Was natürlich noch schön wäre, wenn er mir sagt, wenn ein Server nicht erreichbar ist und dann nicht einfach, Verzeichnis vorhanden, geht das?
Bitte warten ..
Mitglied: 139374
25.04.2019, aktualisiert um 14:45 Uhr
Selbst verständlich, einfach in der If Condition den else Teil hinzufügen
Das kannst du jetzt auch selbst
https://ss64.com/nt/if.html
Ansonsten am Freitag nochmal kommen.
Bitte warten ..
Mitglied: Kraemer
25.04.2019 um 14:37 Uhr
Zitat von casi4711:

Was natürlich noch schön wäre, wenn er mir sagt, wenn ein Server nicht erreichbar ist und dann nicht einfach, Verzeichnis vorhanden, geht das?
Guckst du dir Links, die man dir gibt, eigentlich auch mal an? https://ss64.com/nt/if.html
Bitte warten ..
Mitglied: casi4711
25.04.2019 um 15:10 Uhr
Sorry, da ging mein Post wohl parallel raus, dann schau ich mir mal den Link an. Klar weiß ich dass ich da noch weitere Bedingungen reinschreiben kann, meine Frage lautete aber wie ich abfragen kann, ob der Rechner läuft?
Bitte warten ..
Mitglied: 139374
25.04.2019, aktualisiert um 15:15 Uhr
Ping

Suchfunktion bei dir im A....? Heut is Donnerstag nicht Freitag.

p.s. wenn du dabei bist, mach doch nochmal neuen Kaffee. Danke.
Bitte warten ..
Mitglied: casi4711
26.04.2019, aktualisiert um 07:10 Uhr
Moinsn,

also mein Batch sieht jetzt so aus, auch die grundsätzliche ergooglebare Erkenntnis über die Sterukltur von If Else Schleifen bringt mich da nicht unbedingt weiter. Was um alles in der Welt ist bei ELSE falsch geschrieben


01.
@Echo off
02.
for /l %%f in (22, 1, 255) do (
03.
    (if exist "\\192.168.100.%%f\c$\Program Files (x86)\xy" echo 192.168.100.%%f xy vorhanden
04.
      if not exist "\\192.168.100.%%f\c$\Program Files (x86)\xy" echo 192.168.100.%%f Kein xy
05.

06.
ELSE(
07.
 echo 192.168.100.%%f PC aus )
08.
)
09.
 )
10.
        
11.
ECHO geschafft
12.
 PAUSE
Liebe Grüße


Chris
Bitte warten ..
Mitglied: 139374
26.04.2019, aktualisiert um 07:53 Uhr
Erkenntnis über die Sterukltur von If Else Schleifen bringt mich da nicht unbedingt weiter.
Absoluter Blödsinn sorry.
Du hast den dir gegebenen Artikel einfach überhaupt nicht bis zu Ende gelesen, denn dort hättest du lesen können das Klammern vor und hinter Else in einer Zeile stehen müssen und zwischen dem Wort Else und den Klammern mindestens ein Leerzeichen stehen muss!
Außerdem ist das zweite if stuss und vollkommen überflüssig, wofür gibt es wohl das if else?!
Bitte warten ..
Mitglied: casi4711
26.04.2019 um 08:25 Uhr
moin, musst dich nicht entschuldigen, bin keine Mimose, kann mit dem rauen bis arroganten Ton in manchen Foren leben (auch wenn es nicht mein Stil ist), solange die Hinweise sachdienlich sind. Das mit der selben Zeile hatte ich vorher schon ausprobiert, konntest du ja nicht wissen, aber da hatte er das Else auch bemängelt.

01.
@Echo off
02.
for /l %%f in (22, 1, 255) do (
03.

04.

05.
(
06.
    if exist "\\192.168.100.%%f\c$\Program Files (x86)\xy" (
07.
	echo 192.168.100.%%f xyvorhanden )
08.
      if not exist "\\192.168.1008.%%f\c$\Program Files (x86)\xy" (
09.
	  echo 192.168.100.%%f Kein xy)
10.
)
11.

12.
ELSE (echo 192.168.100.%%f PC aus )
13.

14.
)
15.

16.
 )
17.
        
18.
ECHO geschafft
19.
 PAUSE
Außerdem sehe ich nur ein Else, vielleicht brauche ich ja eine Brille


Liebe Grüße

Chris
Bitte warten ..
Mitglied: 139374
26.04.2019, aktualisiert um 09:16 Uhr
vielleicht brauche ich ja eine Brille
Die brauchst du in der Tat und zwar um meine Posts und unsere dir gegebenen Links richtig zu lesen, denn mehr hättest du nicht gebraucht..
Außerdem habe ich dir oben den Link zum Ping geschickt dem du offensichtlich auch nicht gefolgt bist denn ein if exist ist nicht geeignet um festzustellen ob ein Rechner an ist oder nicht, nur ob ein Verzeichnis existiert oder nicht, das sagt aber nicht aus das ein Rechner nicht an ist, ein Ping zwar auch nicht wenn die Firewall blockt, aber davon fange ich befindet gar nicht erst an, das führt eh zu nichts.
Also JA, du brauchst dringend eine Brille!
01.
@echo off
02.
set "NET=192.168.100"
03.
for /l %%f in (22, 1, 255) do (
04.
    ping -n 1 %NET%.%%f | findstr /i "TTL" >nul 2>&1 && (
05.
        if exist "\\%NET%.%%f\c$\Program Files (x86)\xy" (
06.
            echo %NET%.%%f xy vorhanden
07.
        ) else (
08.
            echo %NET%.%%f xy nicht vorhanden, oder Freigabe geblockt.
09.
        )
10.
    ) || (
11.
            echo %NET%.%%f not responding to ping.
12.
    )
13.
)
14.
PAUSE
Als denn, frohes Copy n' Paste noch.

P.s. Versuchs mal ab und zu mit Manual lesen.
Btw. ist Batch was aus dem letzten Jahrhundert, heute nutzt man wenn schon Winblows, Powershell falls du das in deiner Höhle als Administrator als den du dich hier ausgibst, verpasst haben solltest.

Und tschüss.
Bitte warten ..
Mitglied: casi4711
26.04.2019, aktualisiert um 10:02 Uhr
Zur Info, Dein Script funktioniert, und im Grunde war das auch die eigentliche Kernfrage, was du mit
ping -n 1 %NET%.%%f | findstr /i "TTL" >nul 2>&1 && (
gelöst hast.


Ich bin übrigens Diplomkaufmann und kein Programmierer, sorry, stand aber nicht zur Auswahl bei der Anmeldung, sofern ich einer wäre würde ich bestimmt auch kein Forum aufsuchen. Sofern ich jemandem etwas aus meinem Bereich erkläre bleibe ich aber in der Regel sachlich und behandel die Leute nicht vom hohen Ross herab, zumindest ohne nicht genau zu wissen, was alles schon versucht wurde und was nicht. Und ja ich weiß auch dass Powershell die bessere Alternative ist.

Aber hat halt jeder seinen eigenen Stil Es ist immer ziemlich einfach, sich als Spezialist in einem Bereich, hinzustellen und alle anderen, die mit diesem Teilbereich nur zeitweise zu tun haben als geistig minderbemittelt hinzustellen. Aber dass muss wohl so sein in einem Forum ;), btw, ich nehms mit Humor.

Trotzdem Danke für deine Mithilfe und einen schönen Tag noch


Liebe Grüße Chris
Bitte warten ..
Mitglied: mayho33
26.04.2019 um 15:21 Uhr
Zitat von 139374:

Moinsens.
why the hell kommst du auf %ff??
01.
> @echo off
02.
> for /l %%f in (170, 1, 173) do call :Check %%f
03.
> PAUSE
04.
> goto :eof
05.
> :Check
06.
> if exist "\\192.168.100.%1\c$\xy" echo xy available on 192.168.100.%1
07.
> 
Tschö.

Wie muss es richtig heißen?
Man braucht es eigentlich nur nachlesen
https://ss64.com/nt/for.html
https://ss64.com/nt/call.html (Abschnitt: CALL a subroutine (:label))


Ein Grund warum ich Batch hasse. Unlogisch, nichts sagende Kürzel.... Boahhhhh!!! Ein Salut an jeden der sich das antut / antun kann!

Behaupte ja nicht dass VBS besser wäre, da gibt's aber wenigstens ein klein wenig "Object-Orientiert" Der aktuell Favorit ist PowerShell. Ab v3 GsD nicht mehr buggy. Oder C#
Bitte warten ..
Mitglied: 139374
26.04.2019, aktualisiert um 15:38 Uhr
Meine Rede, aber versuch das mal den Kandidaten hier klar zu machen. Der Batch Krampf ist wie Windows selbst so in die Köpfe vieler eingebrannt das sie nicht mal mehr über den Tellerand schauen können.
Wer mit 25 noch Tretroller mit Stützrädern fährt, lernt es halt nicht mehr auf das Fahrrad umzusteigen wenn die Lernbereitschaft nicht da ist.
Bitte warten ..
Mitglied: mayho33
26.04.2019 um 16:31 Uhr
Zitat von 139374:

Meine Rede, aber versuch das mal den Kandidaten hier klar zu machen. Der Batch Krampf ist wie Windows selbst so in die Köpfe vieler eingebrannt das sie nicht mal mehr über den Tellerand schauen können.
Wer mit 25 noch Tretroller mit Stützrädern fährt, lernt es halt nicht mehr auf das Fahrrad umzusteigen wenn die Lernbereitschaft nicht da ist.

Dafür gibts glatt ein Herzchen!
Bitte warten ..
Ähnliche Inhalte
VB for Applications
If exist - if not exist in .vbs - Datei
gelöst Frage von Komoran12VB for Applications24 Kommentare

Moin, moin, vielleicht hat jemand ja einen Tipp für mich. Mit nachfolgender .vbs lasse ich mir einen Messagebox ausgeben: ...

Batch & Shell

Vbs in exist - wenn ein Fenster existiert dann

Frage von pdiddoBatch & Shell2 Kommentare

Hi Leute Ich versuch auf vbs zu realisieren, sobald ein Fenster (Programm was zuvor gestartet wird) existiert, dass eine ...

Windows Server

Port in Windows wird durch "non-exist" Prozess belegt. Wie beenden?

gelöst Frage von CornitusWindows Server5 Kommentare

Hallo, ich habe auf einem Hyper-V Server 2012 R2 vor einer ganzen Weile mal Veeam Backup and Replication installiert. ...

Neue Wissensbeiträge
Outlook & Mail

Outlook 2016 stürzt ab, wenn man ein (at)- Zeichen im Text einer neuen E-Mail schreibt

Tipp von Enriqe vor 3 StundenOutlook & Mail3 Kommentare

Bei uns in der Firma häuften sich die Fälle, bei denen sich Outlook kommentarlos verabschiedet, wenn man ein - ...

Google Android

Google sperrt Android-Updates und den Play Store für Huawei

Information von Deepsys vor 1 TagGoogle Android8 Kommentare

Das finde ich schon ein starkes Stück, Trump der Welt Diktator. So kann man mit einem Dekret mal eben ...

Windows 7

Südkoreas Regierung setzt auf Linux, um Windows 7 Clients abzulösen

Information von kgborn vor 1 TagWindows 74 Kommentare

Kleiner Infosplitter zum Wochenanfang: Während München (LiMux) und die niedersächsische Finanzverwaltung von Linux auf einen Windows 10-Client (und Office) ...

Internet
Big Brother is Watching You
Information von transocean vor 2 TagenInternet1 Kommentar

Moin, die Datenkrake Google fischt Informationen über Einkäufe ab, die GMail Nutzer im Netz tätigen. Gruß Uwe

Heiß diskutierte Inhalte
Windows 10
Windows am MAC
Frage von LeeX01Windows 1018 Kommentare

Guten Abend zusammen, ich habe gerade ein Macbook Pro vor mir welches ich mit einem Windows 10 to go ...

Batch & Shell
Powershell Datum der zuletzt eingespielten Patche bei remote Servern ermitteln
Frage von bensonhedgesBatch & Shell14 Kommentare

Hallo, ich möchte gerne anhand einer Serverliste (bsp. computers.txt) via PS ermitteln, wann derjeweilige Server zuletzt gepatcht wurde (Liste ...

Linux Userverwaltung
Ist sudo auf Servern Pflicht?
gelöst Frage von lcer00Linux Userverwaltung13 Kommentare

Hallo zusammen, wir haben für einige Netzwerkdienste einige Debian Server. Auf diesen Servern arbeiten keine Benutzer im eigentlichen sinne. ...

Humor (lol)
Mitarbeiter meldet: VPN funktioniert nicht
gelöst Frage von Epixc0reHumor (lol)13 Kommentare

Servus, einer unserer Mitarbeiter meldete heute, sein VPN funktioniert Zuhause nicht, im LTE Netz aber schon. Per Teamviewer hin ...