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

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, 2654 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 ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Backup Script Optimierung und MSSQL (4)

Frage von TommyB83 zum Thema Batch & Shell ...

Batch & Shell
Bash Script soll neue Datei erzeugen (2)

Frage von SpeakerST zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...