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 2 Variablen in einem Batch Befehl

Mitglied: Casper2k

Casper2k (Level 1) - Jetzt verbinden

30.07.2008, aktualisiert 07.08.2008, 4366 Aufrufe, 13 Kommentare

Hallo,

habe mal wieder ein Problem bei welchem ich eure Hilfe brauche.

Ich lese mit

FOR /F "delims=" %%i IN (d:\ordner\server.txt) DO call :test %%i
:test
echo %1

aus der server.txt die mehrere servernamen (untereinander) enthält,
die namen aus und verarbeite diese weiter (z.b. ein echo %1)

jetzt möchte ich aber die namen in einem befehl weiterverarbeiten bei
welchem ich 2 variablen nutzen muss, da ich über


FOR /F "delims=" %%i IN (\\%source-server%\e$\ordner\pruefen.txt) DO call :Produktiv %%i

aus einer weiteren datei wiederrum dateinamen einlese.


skizziert sieht dies dann so aus

copy Variable_Dateiname auf \\Variable_Server\c$\ordner\


ich möchte also mit der ersten variable die datei die die servernamen enthält auslesen und mit
der zweiten variable die dateinamen welche in der 2ten datei stehen einen copy job durchführen.

es befinden sich in beiden dateien mehrere angaben, also in der serverdatei mehrere servernamen
und in der datei-datei mehrere dateinamen

die frage ist nun, wie ich beide variablen in einem befehl gleichzeitig verwenden kann.

kann mir hierzu jemand helfen?
Mitglied: bastla
30.07.2008 um 16:39 Uhr
Hallo Casper2k!

Etwa so:
01.
FOR /F "delims=" %%s IN (d:\inlog-update\server.txt) DO FOR /F "delims=" %%d IN (\\%source-server%\e$\ordner\pruefen.txt) DO copy "%%~d" "\\%%~s\c$\ordner\"
oder, falls Du das Unterprogramm benötigst:
01.
FOR /F "delims=" %%s IN (d:\inlog-update\server.txt) DO FOR /F "delims=" %%d IN (\\%source-server%\e$\ordner\pruefen.txt) DO call :Produktiv "%%~s" "%%~d" 
02.
goto :eof 
03.
 
04.
:Produktiv 
05.
echo '%~1' '%~2' 
06.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Casper2k
31.07.2008 um 07:23 Uhr
oh super!

mit dem 2ten kann ich mal weitermachen.
danke mal!
Bitte warten ..
Mitglied: Casper2k
31.07.2008 um 14:03 Uhr
ah eins noch:

warum %%s und %%d ?
kann das nicht %%a und %%b heißen?
Bitte warten ..
Mitglied: bastla
31.07.2008 um 14:45 Uhr
Hallo Casper2k!

warum %%s und %%d ?
Mnemotechnisch für Server und Datei ...

kann das nicht %%a und %%b heißen?
Wenn Du gesteigerten Wert darauf legst: natürlich - hättest Du aber auch ganz einfach ausprobieren können ...

Grüße
bastla
Bitte warten ..
Mitglied: Casper2k
31.07.2008 um 14:53 Uhr
hmmm ja das habe ich auch.

kann es aber sein, das da nur maximal 1 mal die variable verarbeitet wird?

ich habe %1 dann später nochmal verwenden wollen, da hat es dann aber
mit der variable nicht mehr getan...
Bitte warten ..
Mitglied: bastla
31.07.2008 um 14:58 Uhr
Hallo Casper2k!

%1 gilt im Unterprogramm ":Produktiv" - solange die gewünschte Verwendung innerhalb dieses Unterprogrammes (also vor "goto :eof") erfolgt, steht der Parameter auch zur Verfügung.

Grüße
bastla
Bitte warten ..
Mitglied: Casper2k
31.07.2008 um 15:31 Uhr
hmm komisch.

dann müsste doch eigentlich

FOR /F "delims=" %%a IN (%logpath%\server_alle.txt) do echo Log-Verzeichnisse werden erstellt "%%~a"
md %logpath%\%date%
md %logpath%\%date%\'%~1'\%counter%\
md %logpath%\%date%\'%~1'\%counter%\ersetzt_durch\

funktionieren. %logpath% und %counter% habe ich natürlich schon als variable gesetzt.
Leider wird die Variable aber nicht gesetzt. Es erschein nur: ''
Bitte warten ..
Mitglied: bastla
31.07.2008 um 15:35 Uhr
Hallo Casper2k!

Vorher war noch die Rede von %1 ...

%%a existiert nur innerhalb der "for"-Schleife, daher:
01.
FOR /F "delims=" %%a IN (%logpath%\server_alle.txt) do ( 
02.
    echo Log-Verzeichnisse werden erstellt "%%~a" 
03.
    md %logpath%\%date% 
04.
    md %logpath%\%date%\'%%~a'\%counter%\ 
05.
    md %logpath%\%date%\'%%~a'\%counter%\ersetzt_durch\ 
06.
)
[Edit] %~1 durch %%~a ersetzt. [/Edit]

Grüße
bastla

P.S.: Bitte beim Posten von Batches etc "<code></code>"-Tags verwenden ...
Bitte warten ..
Mitglied: Casper2k
31.07.2008 um 15:43 Uhr
ja mit %1 hab ichs auch versucht. aber rein damit ichs kapiere - wie müsste es denn aussehen wenn ich %1 nutzen möchte?
Bitte warten ..
Mitglied: bastla
31.07.2008 um 16:10 Uhr
Hallo Casper2k!

Sorry - hatte übersehen, dass Du oben in den "md"-Zeilen noch %~1 hattest - siehe Edit ...

%1 kannst Du in einem Unterprogramm verwenden, und das sähe dann so aus:
01.
FOR /F "delims=" %%a IN (%logpath%\server_alle.txt) do call :MakeDirs "%%a" 
02.
goto :eof 
03.
 
04.
:MakeDirs 
05.
echo Log-Verzeichnisse werden erstellt %1 
06.
md %logpath%\%date% 
07.
md %logpath%\%date%\'%~1'\%counter%\ 
08.
md %logpath%\%date%\'%~1'\%counter%\ersetzt_durch\ 
09.
goto :eof
BTW: Es genügt die letzte "md"-Zeile - die "dazwischen" liegenden Verzeichnisse werden automatisch erstellt ...

Noch eine Anmerkung: Die Apostrophe um %~1 sind nicht erforderlich, sondern waren in meinem ersten Beispiel oben nur zu Demozwecken enthalten.

Grüße
bastla
Bitte warten ..
Mitglied: Casper2k
06.08.2008 um 16:34 Uhr
Nochmal ich


ich komm mit meinem Script einfach noch nicht weiter

habe hier mal einen teil des scriptes welcher mir noch probleme macht.

der teil "copy %logpath%\%~2 %logpath%\%date%\%~1\%counter%\ersetzt_durch"
scheint nichts zu kopieren, warum auch immer...

kann m ir da mal jemand auf die sprünge helfen?

thx
Casper
01.
REM ####################################################################################################### 
02.
:IRP_Produktiv 
03.
 
04.
FOR /F "delims=" %%s IN (%logpath%\server_alle.txt) DO FOR /F "delims=" %%d IN (%logpath%\pruefen.txt) DO call :ProcessClient_IRP_Produktiv "%%~s" "%%~d"  
05.
echo Es ist ein Fehler im Bereich :IRP_Produktiv aufgetreten >> %logpath%\log.txt 
06.
 
07.
:ProcessClient_IRP_Produktiv 
08.
 
09.
if exist \\%~1\d$\Programme\anwendung\Prod\name\ETATS\%~2 goto ProcessClient_IRP_Produktiv_Backup 
10.
if not exist \\%~1\d$\Programme\anwendung\Prod\name\ETATS\%~2 goto ProcessClient_IRP_Produktiv_Copy 
11.
 
12.
:ProcessClient_IRP_Produktiv_Backup 
13.
echo ********************************************* >> %logpath%\log.txt 
14.
echo %~1 wird aus der Produktivumgebung gesichert. >> %logpath%\log.txt 
15.
 
16.
echo Folgender Report wird aus der Produktivumgebung von %~1 gesichert: %~2 >> %logpath%\log.txt 
17.
copy \\%~1\d$\Programme\anwendung\Prod\name\ETATS\%~2 %logpath%\%date%\%~1\%counter%\ >> %logpath\log.txt 
18.
 
19.
goto ProcessClient_IRP_Produktiv_Copy 
20.
 
21.
:ProcessClient_IRP_Produktiv_Copy 
22.
echo ********************************************* >> %logpath%\log.txt 
23.
echo Folgender Report wird in die Produktivumgebung kopiert: >> %logpath%\log.txt 
24.
echo %~1 >> %logpath%\log.txt 
25.
 
26.
echo %~2 wird auf %~1 kopiert >> %logpath%\log.txt 
27.
copy %logpath%\%~2 \\%~1\d$\Programme\anwendung\Prod\name\ETATS /Y >> %logpath%\log.txt 
28.
copy %logpath%\pruefen.txt %logpath%\%date%\%~1\%counter%\ 
29.
 
30.
copy %logpath%\*.qrp %logpath%\%date%\%~1\%counter%\ersetzt_durch 
31.
 
32.
if errorlevel = 0 do call echo Kopiervorgang erfolgreich >> %logpath%\log.txt 
33.
if errorlevel = 1 do call :Fehler 
34.
 
35.
REM Das Valid-Verzeichnis wird mit der neuen Datei upgedatet 
36.
ECHO Das Valid-Verzeichnis wird mit der neuen Datei upgedatet >> %logpath%\log.txt 
37.
 
38.
copy %logpath\*.qrp \\server\software$\anwendung\name\Valid\name\ETATS /Y >> %logpath%\log.txt 
39.
goto :ende 
40.
REM #######################################################################################################
Bitte warten ..
Mitglied: bastla
06.08.2008 um 21:56 Uhr
Hallo Casper2k!

Nach der Korrektur kleiner Ungenauigkeiten und dem Entfernen der wenig sinnvollen Zeilen 5 (diese Zeile wird bei korrektem Ablauf des Unterprogrammes ":ProcessClient_IRP_Produktiv" - wofür eine Beendigung dieses Unterprogrammes mit "goto :eof" oder durch das Erreichen des Batchendes Voraussetzung ist - immer erreicht), 9 und 19 sowie einiger nicht benötigter "/Y" ("copy" überschreibt bei Verwendung in einem Batch defaultmäßig bereits vorhandene Zieldateien) sowie dem Hinzufügen diverser Anführungszeichen (um auszuschließen, dass das Kopieren an Leerzeichen in einem Pfad scheitert) könnte der obige Batch-Teil etwa so aussehen (wobei allerdings zu berücksichtigen ist, dass ich den Rest des Batches nicht kenne):
01.
REM ####################################################################################################### 
02.
:IRP_Produktiv 
03.
 
04.
FOR /F "delims=" %%s IN (%logpath%\server_alle.txt) DO FOR /F "delims=" %%d IN (%logpath%\pruefen.txt) DO call :ProcessClient_IRP_Produktiv "%%~s" "%%~d"  
05.
goto :Weiter 
06.
REM ####### Ende dieses Teiles ######## 
07.
 
08.
:ProcessClient_IRP_Produktiv 
09.
if not exist "\\%~1\d$\Programme\anwendung\Prod\name\ETATS\%~2" goto ProcessClient_IRP_Produktiv_Copy 
10.
 
11.
:ProcessClient_IRP_Produktiv_Backup 
12.
echo ********************************************* >> %logpath%\log.txt 
13.
echo %~1 wird aus der Produktivumgebung gesichert. >> %logpath%\log.txt 
14.
 
15.
echo Folgender Report wird aus der Produktivumgebung von %~1 gesichert: %~2 >> %logpath%\log.txt 
16.
copy "\\%~1\d$\Programme\anwendung\Prod\name\ETATS\%~2" "%logpath%\%date%\%~1\%counter%\" >> %logpath\log.txt 
17.
 
18.
:ProcessClient_IRP_Produktiv_Copy 
19.
echo ********************************************* >> %logpath%\log.txt 
20.
echo Folgender Report wird in die Produktivumgebung kopiert: >> %logpath%\log.txt 
21.
echo %~1 >> %logpath%\log.txt 
22.
 
23.
echo %~2 wird auf %~1 kopiert >> %logpath%\log.txt 
24.
copy "%logpath%\%~2" "\\%~1\d$\Programme\anwendung\Prod\name\ETATS" >> %logpath%\log.txt 
25.
copy "%logpath%\pruefen.txt" "%logpath%\%date%\%~1\%counter%\" >nul 
26.
 
27.
copy "%logpath%\*.qrp" "%logpath%\%date%\%~1\%counter%\ersetzt_durch" >nul 
28.
if errorlevel 1 goto :Fehler 
29.
 
30.
echo Kopiervorgang erfolgreich >> %logpath%\log.txt 
31.
 
32.
REM Das Valid-Verzeichnis wird mit der neuen Datei upgedatet 
33.
ECHO Das Valid-Verzeichnis wird mit der neuen Datei upgedatet >> %logpath%\log.txt 
34.
 
35.
copy "%logpath\*.qrp" "\\server\software$\anwendung\name\Valid\name\ETATS" >> %logpath%\log.txt 
36.
goto :eof 
37.
REM ######## Ende Unterprogramm ######### 
38.
 
39.
:Weiter 
40.
REM ######## Hier geht es nach den Schleifen oben weiter ... #########
Wenn Deiner "log.txt" nicht zu entnehmen ist, woran das Kopieren scheitert (immerhin protokollierst Du ja %~1 und %~2 an mehreren Stellen), bleibt Dir eigentlich nur, vor dem fehlerhaften Teil mittels "echo on" das "Anzeigen der Befehle vor der Ausführung" einzuschalten und den Batch von der Kommandozeile mit Umleitung der Ausgaben und Fehlermeldungen in eine weitere Protokolldatei zu starten, etwa
01.
D:\DeinBatch.cmd > D:\DeinBatchLog.txt 2>&1
In der so entstehenden "D:\DeinBatchLog.txt" sind dann alle einzelnen Befehlszeilen und Fehlermeldungen enthalten, was Dir eigentlich das Auffinden des Fehlers ermöglichen sollte.

Grüße
bastla
Bitte warten ..
Mitglied: Casper2k
07.08.2008 um 13:28 Uhr
klasse, jetzt tuts! danke dir!!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell-Befehl in Variable umleiten
gelöst Frage von CoreknabeBatch & Shell5 Kommentare

Moin, ich möchte unseren Exchange mit einem Powershell-Skript konfigurieren. Die Ausgabe eines Befehls soll in einem Windows-Fenster mit OK-Button ...

Windows Systemdateien

Variablen benutzung in Befehlen (Powershell)

gelöst Frage von VidcrafterWindows Systemdateien6 Kommentare

Hallo ich will einen Befehl mit einer Variable ausführen. Remove-AppxProvisionedPackage -Online -PackageName $app Dies funktioniert nicht und mir wird ...

Batch & Shell

Batch - Variablen

gelöst Frage von Marlon1Batch & Shell2 Kommentare

Hallo, Ich habe eine Frage zu Variablen. Und zwar ob es irgendwie geht das Batch mit ein IF Befehl ...

Windows Installation

CMD-Batch Programmstart Befehle

Frage von timsen96Windows Installation1 Kommentar

Schönen guten Tag zusammen, ich möchte gerne über eine cmd oder batch datei ein Programm oder Installation öffnen und ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs9 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Debian
Wie finde ich den betroffenen user
Frage von ProtectedDebian8 Kommentare

Hallo, Wie kann ich den User finden der dies verursacht hat? Betriebsystem ist Debian 7 your Server/Customer with the ...

Voice over IP
Vodafone IP Anlagenanschluss - TK-Anlage einrichten
Frage von BytedreherVoice over IP8 Kommentare

Moin Zusammen, wir hatten gestern bei uns die Umstellung auf den neuen IP Anschluss bei Vodafone. Vodafone IP Anlagenanschluss ...