Top-Themen

Aktuelle Themen (A bis Z)

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

Variable aus zwei anderen erzeugen - Script optimierung

Frage Entwicklung Batch & Shell

Mitglied: Nagus

Nagus (Level 2) - Jetzt verbinden

20.01.2012 um 07:53 Uhr, 2744 Aufrufe, 13 Kommentare

Moin,

da ich derzeit ein wenig auf dem Schlauch stehe und trotz suche nicht die passende Lösung gefunden habe, wäre ich für ein bisschen Hilfe sehr dankbar ....

Das Script soll zwei Dateien auf verschiedenen PCs verteilen. Da die Namens Auflösung derzeit noch nicht geht muss ich über die IPs gehen, sonst wäre es noch einmal einfacher. Ich habe das ganze noch ein wenig gekürzt, als Platzhalter die ...

Zwei Fragen habe ich:
1. Beim Verbinden des laufwerkes wollte ich die Variable standortXX bauen wobei das xx jeweils aus einer anderen Variablen kommt. Klappt nicht, egal in welcher Variante. Ich vermute hier benötige ich eine andere Schreibweise, habe aber einfach nix passendes gefunden ...

2. Das Script hat sicherlich noch Optimierungsmöglichkeiten, da ich einfach zu doof bin, die "richtigen" for schleifen zu basteln ist immer schief gegangen - schnief
Gruß
Nagus


01.
rem @echo off 
02.
Title Verteilungsscript 
03.
color 1F 
04.
setlocal enabledelayedexpansion 
05.
 
06.
set "standort10=192.168.110.149" 
07.
set "standort12=192.168.112.149" 
08.
... 
09.
set "standort23=192.168.124.149" 
10.
 
11.
set "id=xxxx" 
12.
set "pass=yyyy" 
13.
set "para=/persistent:no" 
14.
set "pfad=c:\verzeichnis\daten" 
15.
REM Starte Log-Datei 
16.
echo blabla >%pfad%\CopyJob.log 
17.
echo.>>%pfad%\CopyJob.log 
18.
echo -------------------------------------------------->>%pfad%\CopyJob.log 
19.
echo Start am: %date:~0,12%>>%pfad%CopyJob.log 
20.
echo Start um: %time:~0,8%>>%pfad%CopyJob.log 
21.
echo -------------------------------------------------->>%pfad%\CopyJob.log 
22.
 
23.
net use t: /d /y >nul 
24.
@echo on 
25.
 
26.
:10 
27.
set "einr=10" 
28.
set "return=12" 
29.
goto verbinde 
30.
 
31.
:12 
32.
set "einr=12" 
33.
set "return=14" 
34.
goto verbinde 
35.
 
36.
... 
37.
 
38.
:23 
39.
set "einr=23" 
40.
set "return=ende" 
41.
goto verbinde 
42.
 
43.
:verbinde 
44.
net use t: \\standort%einr%\freigabe$ /user:%id% %pass% %para% 
45.
if %errorlevel% NEQ 0 goto Fehler 
46.
goto kopiere 
47.
 
48.
:Fehler 
49.
echo --> standort%einr%>>%pfad%CopyJob.log 
50.
echo Es ist ein Fehler beim verbinden des Laufwerks fuer standort%einr% augetreten>>%pfad%\CopyJob.log 
51.
echo.>>%pfad%\CopyJob.log 
52.
goto %return% 
53.
 
54.
:kopiere 
55.
echo --< standort%haus%>>%pfad%\CopyJob.log 
56.
copy %pfad%\standort%einr%\Datei1.TXT t:\ /v >>%pfad%\CopyJob.log 
57.
copy %pfad%\standort%einr%\Datei2.txt t:\ /v>>%pfad%\CopyJob.log 
58.
 
59.
:trenne 
60.
net use t: /d /y 
61.
goto %return% 
62.
 
63.
:ende 
64.
%pfad%\bmail.exe -s 192.168.101.23 -p 25 -t xxx.xxx@yyyy.de -f absender@yyyyy.de -a Betreff -m %pfad%\CopyJob.log
Mitglied: icsat
20.01.2012 um 08:23 Uhr
Hallo Nagus,

auf die schnelle und ungetestet folgender Vorschlag:

Zeile 43,5:
01.
set "ziel=standort%einr%"
und Zeile 44:
01.
net use t: \\%ziel%\freigabe$ /user:%id% %pass% %para% 

Gruß icsAT
Bitte warten ..
Mitglied: hajowe
20.01.2012 um 08:29 Uhr
nimme die " noch weg dann sollte es gehen
Hier ein kleiner Test
mit ein paar definitionen. Speicher es unter test und führe es aus dann siehst du das die Set Variablen zusammengesetzt sind
Echo On
set Teil1=123
set Teil2=456
set teil3= %Teil1%%Teil2%
set einr=5
set ziel=standort%einr%
Bitte warten ..
Mitglied: Logan000
20.01.2012 um 08:34 Uhr
Moin Moin

Plan B:
Da deine Stadort IP ja einem Schema folgen ..
01.
set "standort10=192.168.110.149" 
02.
set "standort12=192.168.112.149" 
03.
... 
04.
set "standort23=192.168.124.149"
könntest du doch beim Verbinden so vorgehen:
01.
... 
02.
:verbinde 
03.
net use t: \\192.168.1%einr%.149\freigabe$ /user:%id% %pass% %para% 
04.
if %errorlevel% NEQ 0 goto Fehler 
05.
goto kopiere 
06.
...
und natürlich analog beim kopieren.

Gruß L.
Bitte warten ..
Mitglied: Nagus
20.01.2012 um 09:18 Uhr
Erstmal Danke - muss das jetzt "verarbeiten" melde mich dann aber wieder ...

schei... multitasking auf der Arbeit ...

Gruß
Nagus
Bitte warten ..
Mitglied: icsat
20.01.2012 um 09:42 Uhr
Moin hajowe,

kannst Du kurz erklären, warum die " weg sollen? Mir ist das jetzt nicht ganz klar. Das Ergebnis sollte im Normalfall unabhängig von den " identisch sein.

Bei Deinem teil3 hat sich hinter dem = ein SPACE eingeschlichen.


Gruß icsAT
Bitte warten ..
Mitglied: Nagus
20.01.2012 um 09:47 Uhr
Zitat von hajowe:
nimme die " noch weg dann sollte es gehen
Hier ein kleiner Test
mit ein paar definitionen. Speicher es unter test und führe es aus dann siehst du das die Set Variablen zusammengesetzt sind
Echo On
set Teil1=123
set Teil2=456
set teil3= %Teil1%%Teil2%
set einr=5
set ziel=standort%einr%



Okay das funktioniert nicht weil ich ja die IP haben möchte:

01.
set "standort10=192.168.110.149" 
02.
 
03.
set "einr=10"  
04.
 
05.
net use t: \\standort%einr%\freigabe$ /user:%id% %pass% %para% 
als Ergebnis möchte ich im Script
01.
net use t: \\192.168.110.149\freigabe$ /user:%id% %pass% %para% 
stehen haben ...

oder denke ich gerade falsch ... -.-
Bitte warten ..
Mitglied: icsat
20.01.2012 um 09:54 Uhr
Hallo Logan000,

das funktioniert für 10 und 12 in diesem Beispiel aber nicht für Standort 23, weil dort in der IP ne 24 erwartet wird.
Ich würde ohnehin Liste (Datei) mit allen IP-Adressen bereitstellen und diese per for abarbeiten.

Gruß icsAT
Bitte warten ..
Mitglied: Logan000
20.01.2012 um 10:04 Uhr
Moin

Zitat von icsat:
das funktioniert für 10 und 12 in diesem Beispiel aber nicht für Standort 23, weil dort in der IP ne 24 erwartet wird.
Ich würde ohnehin Liste (Datei) mit allen IP-Adressen bereitstellen und diese per for abarbeiten.

Gut aufgepasst.
Die Variable einr wäre dann keine Standort bezeichnung mehr sondern nur ein IP fragment und die deklarionen müssten entsprechend angepasst werden.
(falls das kein Tippfehler war.)

Gruß L.
Bitte warten ..
Mitglied: bastla
20.01.2012 um 13:24 Uhr
Hallo @All!

Vielleicht als Anhaltspunkt für eine mögliche Lösung:
01.
@echo off & setlocal 
02.
set "Prefix=standort" 
03.
set "standort10=192.168.110.149" 
04.
set "standort12=192.168.112.149" 
05.
 
06.
set "Nr=10" 
07.
call set "IP=%%%Prefix%%Nr%%%" 
08.
echo %IP%
Alternative: "delayedExpansion"

Grüße
bastla
Bitte warten ..
Mitglied: Nagus
20.01.2012 um 13:32 Uhr
Moin hajowe,

das löst leider nicht mein Problem!

ich möchte ja:

set Teil1=192.168.110.100
set Teil2=1

net use t: \\Teil%Teil2% ....

Die Variable Teil1 soll zur Laufzeit aus einer anderen zusammengebaut werden. Sorry kann das nicht besser erklären ....
Bitte warten ..
Mitglied: Nagus
20.01.2012 um 15:45 Uhr
Bastler - ich danke Dir!

Das war es!!!

Allerdings kapiere ich noch nicht warum der Call Befehl notwendig ist ...
:-?
01.
setlocal enabledelayedexpansion 
habe ich ja gesetzt. geht es dann auch mit

01.
set "IP=%%%Prefix%%NR%%%"
Und warum die drei Prozent Zeichen?

Wäre nett wenn Du mich noch aufklären würdest nur in Bezug auf meine Fragen oben, über den Rest weiß ich soweit bescheid
Bitte warten ..
Mitglied: bastla
20.01.2012 um 16:52 Uhr
Hallo Nagus!

Wenn Du "delayedExpansion" verwendest, dann so:
set "IP=!%Prefix%%Nr%!"
Sinn der Aktion ist es, in einem ersten Schritt, %Prefix% und %Nr% zum Ergebnis "standort10" umzuwandeln und danach (= "verzögert") dieses Ergebnis als Variablennamen aufzulösen - genau das macht auch die "call"-Variante, mit dem Unterschied, dass hier eine weitere CMD-Instanz aufgerufen wird, in welcher zunächst die Variablen mit dem einen Prozentzeichen aufgelöst werden, wobei auch aus den weiteren 2 Prozentzeichen "außen herum" jeweils nur eines gemacht wird, sodass danach das Ergebnis von %standort10% zurückgegeben werden kann; schrittweise sieht das also so aus:
Aufruf:                    %%%Prefix%%Nr%%% 
zweite Instanz:            %%standort10%% 
zurück an erste Instanz:   %standort10% 
Auflösung:                 192.168.110.149
Grüße
bastla
Bitte warten ..
Mitglied: Nagus
22.01.2012 um 12:58 Uhr
Okay, daran muss ich noch ein wenig "knabbern" und das in meinem Alter

Script rennt und wird jetzt noch optimiert: email Benachrichtigung (rennt), Datei Vergleich (in Arbeit).

Danke für die Hilfe! Wenn's dann mal fertig ist, werde ich es posten. Viellicht hilft es ja noch anderen ..

Gruß Nagus
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Backup Script Optimierung und MSSQL
Frage von TommyB83Batch & Shell4 Kommentare

Hiho :) Ich hätt da mal 'ne Frage. Scenario ist wie folgt: Windows Server 2012 R2 mit IIS und ...

Batch & Shell
Batch Variable erzeugen mit Leerzeichen und Klammern
gelöst Frage von hipfzwirgelBatch & Shell11 Kommentare

Hallo an Alle, ich habe eine lösbare Aufgabe und finde die richtige Schreibweise nicht. Ich muss eine Variable in ...

Batch & Shell
Bash Script soll neue Datei erzeugen
Frage von SpeakerSTBatch & Shell2 Kommentare

Hallo zusammen, ich benötige mal euren Rat. Ich möchte in einem Script Parameter eingeben die darauf hin einen Text ...

Batch & Shell
Auswahl zweier Variablen zu einer zusammenführen
Frage von complexBatch & Shell5 Kommentare

Moin miteinander, und wieder eine Frage bezüglich Powershell: Ich habe das Problem, dass ich gerade an einem script arbeite, ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 12 StundenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 12 StundenMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 20 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Heiß diskutierte Inhalte
Windows Server
Kann man im KMS nachschauen , wieviele Clients den Key in Anspruch genommen haben
gelöst Frage von rainergugusWindows Server15 Kommentare

Hallo, wir haben einen KMS Windows 10 Key. Dieser ist ja W7 kompatibel. Aber unser Windows 7 Pool registriert ...

Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...