Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Problem mit zähler und Variablen

Frage Entwicklung Batch & Shell

Mitglied: corpse2001

corpse2001 (Level 1) - Jetzt verbinden

30.11.2006, aktualisiert 01.12.2006, 5057 Aufrufe, 11 Kommentare

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
Mitglied: miniversum
30.11.2006 um 11:14 Uhr
Mit Set /a

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

Gruß
Biber
Bitte warten ..
Mitglied: corpse2001
30.11.2006 um 11:33 Uhr
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
Bitte warten ..
Mitglied: corpse2001
30.11.2006 um 11:54 Uhr
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
Bitte warten ..
Mitglied: Biber
30.11.2006 um 14:40 Uhr
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:]
01.
(=12:46:48  D:\temp=) 
02.
>set var= Inhalt var 
03.
 
04.
(=14:31:58  D:\temp=) 
05.
>set var = Inhalt andere var 
06.
 
07.
(=14:32:09  D:\temp=) 
08.
>set var 
09.
var= Inhalt var 
10.
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:
01.
Set var1=Inhalt der var1 
02.
-oder- 
03.
set "var2=Inhalt der var2" 
04.
--- 
05.
- nicht: 
06.
set var  =  inhalt var3                    <i><---------------- das ist FALSCH!!</i>

Dann lüpt et.

Gruß
Biber
Bitte warten ..
Mitglied: corpse2001
30.11.2006 um 15:01 Uhr
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
Bitte warten ..
Mitglied: Biber
30.11.2006 um 18:40 Uhr
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.

01.
@echo off & setlocal EnableDelayedExpansion 
02.
set /a i = 0 
03.
set DATUM=%date:~3% 
04.
<b>echo </b> cdcd Konfigurationen 
05.
<b>echo </b> mkdir "config_%date%" 
06.
<b>echo </b> cd "config_%date% 
07.
 
08.
REM #ROuterliste# (Router hinzufügen wie Router0 und Zahl vor GOTO ende um 1 erhöhen!) 
09.
 
10.
REM Router0 
11.
set "Routername0=DSL" 
12.
set "VPN0=192.168.xxx.xxx" 
13.
set "PW0=passwortPW0" 
14.
 
15.
REM Router1 
16.
set "Routername1=DSL2" 
17.
set "VPN1=192.168.xxx.yyy" 
18.
set "PW1=passwortPW2" 
19.
 
20.
REM #Ende der Routerliste# 
21.
 
22.
:loop 
23.
:nochmal 
24.
set Adresse=!VPN%i%! 
25.
set Name=!Routername%i%! 
26.
set Pass=!PW%i%! 
27.
 
28.
<b>echo</b> tftp %Adresse% get "%Pass% readscript" "config_%Name%_%date%.lcs"  
29.
REM IF NOT EXIST "c:\Konfigurationen\config_%j%%Name%%j%_%date%.lcs" goto nochmal 
30.
set /a i = i+1 
31.
IF %i% LSS 2 goto loop 
32.
 
33.
:ende 
34.
Pause
Die echo 's sind nur zur Demo drin.
Ergebnis ist im wesentlichen die Ausgabe
01.
>f:\administrator\corpses.bat 
02.
tftp 192.168.xxx.xxx get "passwortPW0 readscript" "config_DSL_11.2006.lcs" 
03.
tftp 192.168.xxx.yyy get "passwortPW2 readscript" "config_DSL2_11.2006.lcs" 
04.
Drücken Sie eine beliebige Taste . . .
HTH Biber
Bitte warten ..
Mitglied: corpse2001
01.12.2006 um 09:18 Uhr
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"
Bitte warten ..
Mitglied: Biber
01.12.2006 um 09:31 Uhr
Moin corpse2001,

lass mich raten: in der c:\config\router.lst steht...?
01.
192.168.xxx.xxx, passwortPW0,DSL 
02.
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
Bitte warten ..
Mitglied: corpse2001
01.12.2006 um 11:54 Uhr
genau da stehts drin :D

ja der beitrag kann geschlossen werden
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Grosses Variablen Problem ( Batch) (30)

Frage von clragon zum Thema Batch & Shell ...

DSL, VDSL
Problem mit variernder Internetgeschwindigkeit (12)

Frage von schaurian zum Thema DSL, VDSL ...

Windows Netzwerk
gelöst Problem mit PSexec64 von Sysinternals (8)

Frage von MaxMoritz6 zum Thema Windows Netzwerk ...

Windows Server
gelöst Problem nach DC-Installation unter Server 2012 R2 (9)

Frage von manuel1985 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
RODC über VPN - Verbindung weg (10)

Frage von stefan2k1 zum Thema Windows Server ...