none
Probleme bei Batchfile RRS feed

  • Frage

  • Hallo zusammen,

    ich bin derzeit am Schreiben diverser kleiner Hilfsprogramme, um die Arbeitswege ein wenig zu verkürzen.

    Ich weiß aber leider nicht, ob ich hier richtig bin, falls nicht bitte auf das richtige Forum etc. verweisen.

    Hierzu habe ich mehrere Herangehensweisen getestet, um eine bestimmte Datei nach Inhalt zu durchsuchen, um weitere Befehle in der Batchdatei durchzuführen, allerdings bin ich auf eine Menge Fehler gestoßen, die ich mir einfach nicht erklären kann.

    Zum Beispiel bei diesem Code:

    @echo & setlocal enabledelayedexpansion
    :Start
    set /p KDNR=Bitte KDNR eingeben:
    IF %KDNR% GTR 10915 (
    	goto Start
    	)
    
    :Auswahl
    set /p Auswahl=Bitte auswaehlen, was angepingt werden soll. HPC (h) LPC (l) BPC (b) Ttest (t) Drucker (d) Telefon (p) :
    	IF %Auswahl% NEQ h IF %Auswahl% NEQ l IF %Auswahl% NEQ b IF %Auswahl% NEQ t IF %Auswahl% NEQ d IF %Auswahl% NEQ p (
    	goto Error1
    	)
    
    REM Arbeitsverzeichnis etc. wird gesetzt
    set Suchverzeichnis=D:\Test
    set Suchdatei=Testdaten.txt
    set Suchtext=%KDNR%
    
    for %%a in (%Suchverzeichnis%\%Suchdatei%) do (
      for /f "delims=:" %%b in ('findstr /i /n /c:%Suchtext% "%%a"') do (
    	IF %Auswahl%==h set /a theNextline=%%b+1 > NUL
        	IF %Auswahl%==l set /a theNextline=%%b+2 > NUL
    	IF %Auswahl%==b set /a theNextline=%%b+3 > NUL
    	IF %Auswahl%==t set /a theNextline=%%b+4 > NUL
    	IF %Auswahl%==d set /a theNextline=%%b+5 > NUL
    	IF %Auswahl%==p set /a theNextline=%%b+6 > NUL
     for /f "delims=: tokens=1,*" %%i in ('findstr /n $ "%%a" ^| findstr /b !theNextLine!') do (
          set IP=%%j
        )
      )
    )
    
    echo ---------------------------------------------------------------------------------
    echo Es wird der Markt %KDNR% mit der gewuenschte IP-Adresse %IP% 10x angepingt.
    echo ---------------------------------------------------------------------------------
    ping %IP% -n 10
    echo ---------------------------------------------------------------------------------
    rem set /p Neustart=Soll ein anderer Test angepingt werden? (y/n)
    	IF %Neustart%==y (
    	goto Start
    	)
    	IF %Neustart%==n (
    	goto Exit
    	)
    
    :Exit
    endlocal
    exit
    
    :Error1
    echo Es konnte nicht ermittelt werden, was angepingt werden soll.
    goto Auswahl

    Die Testdaten sind wie folgt aufgebaut (Testdaten):

    10000

    127.0.0.1

    127.0.0.2

    127.0.0.3

    127.0.0.4

    100001

    [...]

    Nun lädt er allerdings nicht nur die eine Zeile, sondern viele verschiedene Zeilen. Am Anfang funktionierte es, anschließend nicht mehr.

    Oder:

    Er springt sofort wieder zurück an den Start und möchte von mir die KDNR, obwohl es für mich dort keine Erklärung gibt.

    Pingen möchte er auch nicht, sondern nur tracern ... Bei anderen Dateien pingt er, nur bei dieser z.B. nicht.

    Anschließend habe ich versucht mit Powershell eben diese gewünschte Zeile zu ermitteln, aber hier hapert es bei der Übergabe an die Batchdatei, sodass daraus eine Variable entsteht. Versucht habe ich es mit "for f/", aber hier werden die Variablen nach Powershell nicht übergeben und zurück ...

    Eine andere Heransgehenweise war, die IP-Adressen fest als Umgebungsvariable festzulegen, aber hier habe ich das Problem bei manueller Eingabe der KDNR ruft er mir die IP-Adresse nicht auf, weil er die festgelegte Variable (logischerweise) nicht zieht.

    Was mache ich hier nur falsch? ...

    Für Rückfragen gerne melden.

    Mit freundlichen Grüßen,

    Olaf

    Mittwoch, 22. Februar 2017 12:13

Alle Antworten

  • $filiale = read-host "welche Filiale möchten sie überprüfen"
    
    $pfad = "c:\temp\" + $filiale
    
    $inhalt = get-content $pfad
    foreach($pc in $inhalt)
    {
    
    Test-Connection $pc
    }
    du könntest ja für jede Filiale bzw. kdnr ein File anlegen und diese mittel read-host Parameter öffnen. Im file stehen dann die jeweiligen PCs die angepingt werden sollen.


    Chris


    • Bearbeitet -- Chris -- Donnerstag, 23. Februar 2017 16:57
    Donnerstag, 23. Februar 2017 16:56