worker734
Goto Top

Variabler Pfad einer Datei?

Ich möchte den Anwender den Pfad der Datei, in diesem Fall SRenamed.log,
abfragen und dem Script übergeben.

Wie kann ich das realisieren?


@echo off

set "root=%SystemDrive%\"
set "datei=%root%SRenamed.log"
set "slogfile=SPing.log"
set "flogfile=FPing.log"

rem *
cls
call :show_header
rem
*

echo Computer aus SRenamed.log mit Ping auf Antwort pruefen
echo zum Programm beenden Fenster schliessen.
echo zum fortfahren . . .
echo.
pause
echo.

:: Datei auslesen
echo Datei %Datei% auslesen . . .
echo.

:: Existens von SRenamed.log pruefen
if not exist %datei% (
echo Datei %datei% nicht gefunden!
)
if not exist %datei% goto :end
For /F "tokens=2* " %%i in (%Datei%) do call :ping %%i
goto :eof



Danke und Gruß

Content-Key: 18990

Url: https://administrator.de/contentid/18990

Printed on: April 26, 2024 at 07:04 o'clock

Member: ketchup
ketchup Nov 04, 2005 at 08:48:48 (UTC)
Goto Top
du könntest der Batch einen Parameter mitgeben, welcher der Dateiname (inkl. Pfad) ist.

zb: mybatch.bat c:\myfiles\rechner.txt

in mybatch kannst du dann mit %1 bis %9 auf die übergebenen Werte zugreifen.!

jürgen
Member: Biber
Biber Nov 04, 2005 at 09:32:29 (UTC)
Goto Top
Moin Worker734,
eine (ausreichende, nicht ästhetische) Möglichkeit der interaktiven Abfrage unter dem CMD-Interpreter:
SET /P Variable=[EingabeaufforderungZeichenfolge]
siehe unter SET /?
Also z.B.
SET /P usersSLogDIR="Geben Sie ein Verzeichnis für..blubb..an, Vorgabe ist %root%: "
IF [%usersSLogDIR%]==[%root%%] set "usersSLogDIR=%root%"
..

Wenn Du es etwas zeitgemäßer haben willst, dann diese Abfrage über ein kleines *.vbs-Skript und in einem Fenster mit runden Ecken. Prinzip ist dasselbe. face-wink

HTH Biber
Member: Worker734
Worker734 Nov 04, 2005 at 10:07:49 (UTC)
Goto Top
Hi Biber,

zeitgemäßer ist immer gut, hast du einen Beispiellink dafür?

Gruß
Member: Biber
Biber Nov 04, 2005 at 10:35:20 (UTC)
Goto Top
Nö, das nicht,
aber wie man/frau eben schnell aus einem Batch heraus ein paar Zeilen *.vbs erzeugt und aufruft, hab ich in meinem Batch-Tut III (in Batch & Shell) skizziert.
Und eine InputBox bekommst Du garantiert hin. Die sind wiederum bestimmt im Bereich "VB, VBS & VBA" oder so ähnlich.
Müsste jedenfalls alles hier im Forum vorhanden sein.

Biber
Member: Worker734
Worker734 Nov 04, 2005 at 11:01:35 (UTC)
Goto Top
Hi Biber,

bevor ich mich in VB oder VBA einarbeite habe ich es mit deinem anderen Lösungsweg versucht.
Nur geht es nicht so recht.

echo %userSLogDIR%
zeigt bei mir immer "ECHO OFF" an

und komm ich dann mit goto :eof wieder zurück oder muss ich eine
Sprungmarke z.B. :Dateiauslesen setzen?

Mein Ping Befehl funktioniert auch nur wenn ich ins Root wechsel,
weißt du woran das liegt?

Danke dir.

Batchfile------------------------------------------------

@echo off

set "root=%SystemDrive%\"
set "datei=SRenamed.log"
set "rdatei=%root%SRenamed.log"
set "slogfile=SPing.log"
set "flogfile=FPing.log"

echo Computer aus SRenamed.log mit Ping auf Antwort pruefen
echo zum Programm beenden Fenster schliessen.
echo zum fortfahren . . .
echo.
pause
echo.

:: Datei auslesen
echo Datei %rDatei% auslesen . . .
echo.

:: Existens von SRenamed.log pruefen
if not exist %rdatei% (
echo Datei %rdatei% nicht gefunden!
set /p usersSLogDIR="Geben Sie ein Verzeichnis für %datei% an, Vorgabe ist "%root%" :"
IF [%usersSLogDIR%]==[%root%] set "usersSLogDIR=%root%"
set "datei=%usersSLogDIR%\%datei%"

echo %usersSLogDIR%
echo %datei%
pause
goto :eof
)


rem if not exist %rdatei% goto :end

For /F "tokens=2* " %%i in (%rdatei%) do call :ping %%i
goto :eof


:ping
:: Warten auf Antwort
echo ping Computer "%1" ...

:: ins Root wechseln da sonst kein ping funktioniert!!
cd\
C:
ping %1
If Errorlevel 1 (
call :pingfailed %1
goto :eof
)
Member: Biber
Biber Nov 04, 2005 at 12:43:14 (UTC)
Goto Top
Nur geht es nicht so recht.
..funk-ti-o-niert nicht so recht *grmffff*


echo %userSLogDIR%
zeigt bei mir immer "ECHO OFF" an
Dann ist die Variable nicht definiert. Und der CMD-Interpreter mach daraus
ECHO
..was laut Hilfe die aktuelle ECHO-Einstellung anzeigt.
Undokumentierte Abhilfe: Ein "unerlaubtes Sonderzeichen" (. oder / oder..) direkt hinter ECHO
echo %userSLogDIR% ...zeigt wenigstens keinen Unsinn an.


und komm ich dann mit goto :eof wieder
zurück oder muss ich eine
Sprungmarke z.B. :Dateiauslesen setzen?

Mein Ping Befehl funktioniert auch nur wenn
ich ins Root wechsel,
weißt du woran das liegt?
Hm... eigentlich sollte Ping.exe im %path% sein und überall gefunden werden...
keine Ahnung, aber zur Not rufe es mit Pfadangabe auf, schlimmstenfalls auf \\server\freigabe bereitstellen.

--------------------------Batchfile------------------------------------------------

@echo off

set "root=%SystemDrive%\"
set "datei=SRenamed.log"
set "rdatei=%root%SRenamed.log"
set "slogfile=SPing.log"
set "flogfile=FPing.log"

echo Computer aus SRenamed.log mit Ping auf Antwort pruefen
echo zum Programm beenden Fenster schliessen.
echo zum fortfahren . . .
echo.
pause
echo.

:: Datei auslesen
echo Datei %rDatei% auslesen . . .
echo.

:: Existens von SRenamed.log pruefen
if not exist %rdatei% (
echo Datei %rdatei% nicht gefunden!
set /p usersSLogDIR="Geben Sie ein Verzeichnis für %datei% an, Vorgabe ist "root%" :"
IF [%usersSLogDIR%]==[%root%] set "usersSLogDIR=%root%"
Sooooooooorry, mein Fehler!!! *schämschämschäm*
> IF [%usersSLogDIR%]== set "usersSLogDIR=%root%"

rem if not exist %rdatei% goto :end

For /F "tokens=2* " %%i in (%rdatei%) do call :ping %%i
goto :eof


:ping
:: Warten auf Antwort
echo ping Computer "%1" ...

:: ins Root wechseln da sonst kein ping funktioniert!!
cd\
C:
ping %1
???????? merkwürdig.... findet er nichts? Oder liegt da vielleicht eine Ping.bat im Weg??
dann halt %windir%\ping.exe ... oder \\serverX\freigabeY\ping.exe

If Errorlevel 1 (
call :pingfailed %1
goto :eof
)