corpse2001
Goto Top

Problem mit zähler und Variablen

hallo

habe ein problem mit einer batchdatei ich kann den zähler nicht erhöhen (i)
und weiss nicht wie dann die Variablen ändern soll?

hier mein Code:

set i = 0
set DATUM=%date:~3%
cd\
cd Konfigurationen
mkdir "config_%date%"
cd "config_%date%

REM #ROuterliste# (Router hinzufügen wie Router0 und Zahl vor GOTO ende um 1 erhöhen!)

REM Router0
set "Routername0 = DSL"
set "VPN0 = 192.168.xxx.xxx"
set "PW0 = passwort"

REM Router1
set "Routername1 = DSL2"
set "VPN1 = 192.168.xxx.xxx"
set "PW1 = passwort"


REM #Ende der Routerliste#


:loop
IF %i% == "2" GOTO ende
:nochmal
set Adresse=VPN%i%
set Name=Routername%i%
set Pass=PW%i%
tftp %Adresse% get "%Pass% readscript" "config_%Name%_%date%.lcs"
IF NOT EXIST "c:\Konfigurationen\config_%Name%_%date%.lcs" goto nochmal
set i = i + 1
echo %i%
goto loop

:ende
Pause


danke schonmal für die hilfe

mfg corpse2001

Content-Key: 45719

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

Ausgedruckt am: 28.03.2024 um 20:03 Uhr

Mitglied: miniversum
miniversum 30.11.2006 um 11:14:20 Uhr
Goto Top
Mit Set /a

miniversum
Mitglied: corpse2001
corpse2001 30.11.2006 um 11:15:31 Uhr
Goto Top
bei jedem set?
Mitglied: Biber
Biber 30.11.2006 um 11:28:49 Uhr
Goto Top
bei jedem set?
Jepp. Bei jedem Set mit Variablen, mit denen Du rechnen willst..

Gruß
Biber
Mitglied: corpse2001
corpse2001 30.11.2006 um 11:33:41 Uhr
Goto Top
hallo

leider wird das vorangestellte wort nicht übernommen wenn ich das so mache:

set Name=Routername%i%

ich möchte das dann dann mit dem zähler (i)
%Name% durch Routername1 Routername2 usw. ersetzt wird

was mache ich da falsch
Mitglied: corpse2001
corpse2001 30.11.2006 um 11:54:56 Uhr
Goto Top
das scheint nun zu funktionieren allerdings werden dann die werte die ich dafür festgelegt habe am anfang nicht richtig oder nur halb übergeben bei Adresse welches die daten von z.B. VPN0 haben soll steht dann nur 192 und bei Pass was PW0 ist dann nur eine 0
wo liegt denn nun da mein fehler das kann ich nicht nachvollziehen
Mitglied: Biber
Biber 30.11.2006 um 14:40:14 Uhr
Goto Top
bitte liebes corpse2001 gewöhne dir an in dem bereich "batch & shell" was da ist wo der biber den mod-hut aufhat in zukunft mit punkt und komma zu schreiben sonst werden meine hilfreichen Antworten im gleichen schreibstil wie deinem abgefasst sein.

Die Antwort ist, dass im Batch oder vielmehr beim SET-Befehl sowohl vorhandene Leerzeichen VOR wie NACH dem Gleichheitszeichen auch eine Rolle spielen.

Beispiel [am CMD-Prompt:]
(=12:46:48  D:\temp=)
>set var= Inhalt var

(=14:31:58  D:\temp=)
>set var = Inhalt andere var

(=14:32:09  D:\temp=)
>set var
var= Inhalt var
var = Inhalt andere var

Also: richte in Deinem Schnipsel den Code so her, dass
- die Leerzeichen zwischen %varname% und Gleichheitszeichen immer rausfliegen.
- die Leerzeichen nach dem Gleichheitszeichen zumindest bei den SET-Anweisungen ohne Parameter "/a" rausfliegen.

Also:
Set var1=Inhalt der var1
-oder-
set "var2=Inhalt der var2"  
---
- nicht:
set var  =  inhalt var3                    <i><---------------- das ist FALSCH!!</i>


Dann lüpt et.

Gruß
Biber
Mitglied: corpse2001
corpse2001 30.11.2006 um 15:01:42 Uhr
Goto Top
danke für die antwort!
ich habe jetzt alles am laufen bis auf eine sache.

und zwar werden in dem tftp-befehl falsche informationen reingeschrieben anstatt z.B.für %VPN0% oder %VPN1% die IP reinzuschreiben gibt er mit das so aus:

tftp %VPN0% get "%PW0% readscript" "config_%Routername0%_30.11.2006.lcs"

und so kann der befehl ja nicht ausgeführt werden

hier mein jetziger code wo sonst alles funktioniert ausser das oben beschriebene:

set j=%%%
set DATETIME=%time:~0,8%
set /a i = 0
set DATUM=%date:~3%
cd\
cd Konfigurationen
mkdir "config_%date%"
cd "config_%date%

REM #ROuterliste# (Router hinzufügen wie Router0 und Zahl vor GOTO ende um 1 erhöhen!)

REM Router0
set Routername0 = DSL
set VPN0 = 192.168.xxx.xxx
set PW0 = passwort

REM Router1
set Routername1 = DSL2
set VPN1 = 192.168.xxx.xxx
set PW1 = passwort

REM #Ende der Routerliste#


:loop
IF %i% == 2 GOTO ende
:nochmal
set Adresse=VPN%i%
set Name=Routername%i%
set Pass=PW%i%

tftp %j%%Adresse%%j% get "%j%%Pass%%j% readscript" "config_%j%%Name%%j%_%date%.lcs"
REM IF NOT EXIST "c:\Konfigurationen\config_%j%%Name%%j%_%date%.lcs" goto nochmal
set /a i = i+1
goto loop

:ende
Pause
Mitglied: Biber
Biber 30.11.2006 um 18:40:23 Uhr
Goto Top
Moin corpse2001,

es ist ein paar Stellen nicht so ganz erkennbar, was Du nun versuchst in Deinem Codeschnipsel, was ehemalige und was künftige Variablen und Varianten sind...

Okay, so wie ich den Sinn des Schnipsels im Eröffnungsbeitrags und den des Fragments im letzten Posting interpretiere, wäre folgende Änderung ein Schritt in die richtige Richtung.

@echo off & setlocal EnableDelayedExpansion
set /a i = 0
set DATUM=%date:~3%
<b>echo </b> cdcd Konfigurationen
<b>echo </b> mkdir "config_%date%"  
<b>echo </b> cd "config_%date%  

REM #ROuterliste# (Router hinzufügen wie Router0 und Zahl vor GOTO ende um 1 erhöhen!)

REM Router0
set "Routername0=DSL"  
set "VPN0=192.168.xxx.xxx"  
set "PW0=passwortPW0"  

REM Router1
set "Routername1=DSL2"  
set "VPN1=192.168.xxx.yyy"  
set "PW1=passwortPW2"  

REM #Ende der Routerliste#

:loop
:nochmal
set Adresse=!VPN%i%!
set Name=!Routername%i%!
set Pass=!PW%i%!

<b>echo</b> tftp %Adresse% get "%Pass% readscript" "config_%Name%_%date%.lcs"   
REM IF NOT EXIST "c:\Konfigurationen\config_%j%%Name%%j%_%date%.lcs" goto nochmal  
set /a i = i+1
IF %i% LSS 2 goto loop

:ende
Pause

Die echo 's sind nur zur Demo drin.
Ergebnis ist im wesentlichen die Ausgabe
>f:\administrator\corpses.bat
tftp 192.168.xxx.xxx get "passwortPW0 readscript" "config_DSL_11.2006.lcs"  
tftp 192.168.xxx.yyy get "passwortPW2 readscript" "config_DSL2_11.2006.lcs"  
Drücken Sie eine beliebige Taste . . .

HTH Biber
Mitglied: corpse2001
corpse2001 01.12.2006 um 09:18:09 Uhr
Goto Top
danke für die antwort das teste ich nochmal habe das nun aber so gelöst.

cd\
c:
cd config
mkdir "config_%date%"
cd "config_%date%"

For /F "tokens=1,2,*" %%g IN (c:\config\router.lst) DO tftp %%g get "%%h readscript" "%%g-%date:~12,1%%date:~6,2%%date:~3,2%.lcs"
Mitglied: Biber
Biber 01.12.2006 um 09:31:41 Uhr
Goto Top
Moin corpse2001,

lass mich raten: in der c:\config\router.lst steht...?
192.168.xxx.xxx, passwortPW0,DSL
192.168.xxx.yyy, passwortPW2, DSL2

Ist auf jeden Fall eleganter als die ganzen Daten und Passworte fest verdrahtet im Batch zu halten.

Können wir den Beitrag jetzt schließen?

Grüße
Biber
Mitglied: corpse2001
corpse2001 01.12.2006 um 11:54:55 Uhr
Goto Top
genau da stehts drin :D

ja der beitrag kann geschlossen werden