# Ping Batch file



## Corioc (1. September 2003)

Hi ich hab da ein Proble. Ich möchte das meine Batch file (.bat) eine Textdate pingt.

z.B. In einer Textdatei Name "ips.txt" sind mehrere Ip drin die gepingt werden sollen. Nun habe ich hier schon ein versuch gestartet. aber ich hätte es gerne so wie ich es schon gesagt hab. Wer hälfen kann Danke im vorraus.

Versuch:

```
cls
@echo off
: ping

@echo Ziel IP eingeben

set /p ip=

ping %ip%

set ip=

@pause
cls
goto choice

cls

goto choice
```

Ich weiss das, dass nicht richtig. Also nochmal es sollen dann z.B. wenn ich auf die Batch file klicke die bat gleich die txt öffnen und alle ip anpingen und die, die gingen in einer anderen txt speichern.


----------



## chibisuke (10. September 2003)

und wieder ein grenzfall wo man mit batchfiles net mehr viel machen kann....

machs mit net C progy...

```
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
    FILE* file;
    char ip[20];
    char command[100];
    if(argv < 2) {
        printf("nicht genug parameter");
        return 1;
    }
    file = fopen(argv[1], "r");
    if(file == NULL) {
        printf("datei nicht gefunden");
        return 2;
    }
    while(!feof(file)) {
        memset(ip, 0, 20);
        fgets(ip, 20, file);
        sprintf(command, "ping %s\n", ip);
        system(command);
    }
    return 0;
}
```
damit sollte es eigendlich gehen, einfach durch nen C / C++ compiler jagen und schon funktionierts...

[edit] - das ganze mal eben in code tags gesetzt [/edit]


----------



## Andreas Gaisbauer (10. September 2003)

Hi,

solltest du noch keinen C Compiler dein eigen nennen, empfehle ich dir DevCPP  auf http://www.bloodshed.net/devcpp.html von  Bloodshed Software. Ist ein völlig kostenloses OpenSource CompilerFrontend / Ide der auf GCC3  aufsetzt. Download: http://prdownloads.sourceforge.net/dev-cpp/devcpp4980.exe

bye


----------



## Corioc (11. September 2003)

Hey Big  an euch


----------



## PhReAkAzOiD (7. Februar 2005)

Kommt ein bischen spät...hab was mit Batch gefunden:


```
cls
@echo off
if "%1" == "" (
echo iplist.txt 
) ELSE (
FOR /F "eol=; tokens=1" %%a in (%1) do ping %%a >> pingresult.txt
echo fertig
)
```

In der Datei iplist.txt schreibst du untereinander die IP's die angepingt werden sollen. In der Datei pingresult.txt hast du die Ergebnisse (habe vorsichts halber mal selber die Datei erstellt, weiss nicht ob sie automatisch erstellt werden würde)


----------



## Cyberjunkie (3. August 2006)

chibisuke hat gesagt.:
			
		

> und wieder ein grenzfall wo man mit batchfiles net mehr viel machen kann....
> 
> machs mit net C progy...
> 
> ...



ich habe auch so ein ähnliches programm geschrieben, nur möchte ich gerne das er das resulatat vom ping versuch in eine txt datei speichert.

nun stehe ich aber vor dem problem wie man den system befehl in einem strin umwandeln soll!?

weil wenn ich fprintf(gOutFp, "%s", command); schreibe, schreibt er nur den ping befehl in die text datei (ist ja klar) aber wenn ich statt command system(command) schreibe hängt sich das programm immer auf....

bitte um eure hilfe.


----------



## Andreas Gaisbauer (10. August 2006)

Versch doch mal nur diese Zeile zu ändern:


```
sprintf(command, "ping %s >> c:log.txt\n", ip);
```

sollte eigentlich gehen...


----------



## chrysler (6. August 2007)

PhReAkAzOiD hat gesagt.:


> Kommt ein bischen spät...hab was mit Batch gefunden:
> 
> 
> ```
> ...



Hallo.
Hier wird ja eine Zeile bis zu ihrem Ende ausgelesen. Wie teile ich einen String aus einer Variable in zwei Teile, nämlich in den Teil vor z.B. "+" und nach "+"?
Das Beispiel sieht dann so aus:
Variable z: "12+4"
Die Variable z soll zu x und u gemacht werden, also x="12" und u="4"
Geht das dann so?

```
FOR /F "eol=+" tokens=1" %%a in (%z) do ...
```


----------

