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 Batch - Variable wird nicht gesetzt

Mitglied: Dani

Dani (Level 5) - Jetzt verbinden

30.01.2007, aktualisiert 31.01.2007, 9222 Aufrufe, 13 Kommentare

Guten Abend alle miteinander,

ich habe ein kl. Problem mit einer Variablen in einer Schleife. Und zwar wird dieser Varible kein Wert zugewiesen, obwohl einer in %%b drin steht!
Hier mal mein Script:
01.
@ECHO off & setlocal 
02.
 
03.
::Variablen 
04.
SET nr=0 
05.
SET nr_full=4 
06.
 
07.
SET dir_src=C:\WINDOWS\SYSVOL 
08.
SET dir_des=K:\Daten 
09.
 
10.
SET name=NETLOGON 
11.
 
12.
 
13.
::Überprüft, ob die Datei vorhanden ist 
14.
FOR /l %%a IN (%nr_full%,-1,1) DO (  
15.
	IF NOT EXIST "%dir_des%\%name%%%a.rar" SET nr=%%a 
16.
17.
 
18.
::Wenn 0, dann lege neues Archiv an. 
19.
IF "%nr%" == "0" ( 
20.
	FOR /f %%b IN ('DIR "%dir_des%\%name%*.rar" /b /o-d') DO SET archiv=%%b 
21.
	Echo Variable Archiv ist %archiv% 
22.
 
23.
	::DEL "%dir_des%\%archiv%" 
24.
	::rar.exe a -m5 -y "%dir_des%\%archiv%" "%dir_src%" 
25.
) ELSE ( 
26.
	rar.exe a -m5 -y "%dir_des%\%name%%nr%.rar" "%dir_src%" 
27.
28.
 
29.
pause
Es funktioniert alles bis auf die DO Anweisung in der IF - Anweisung!! Jemand eine Idee???


Gruß
Dani
Mitglied: Biber
30.01.2007 um 22:16 Uhr
Moin Dani,

fehlt nicht nach %name% im String "%dir_des%\%name%*.rar" ein Backslash?

So: "%dir_des%\%name%\*.rar" ??

HTH
Biber
Bitte warten ..
Mitglied: Dani
30.01.2007 um 22:32 Uhr
Hi,
Leider nicht!! War zuerst auch mein Gedanke.

Denn in dem Ordner K:\Daten liegen verschiedene Archive. Es soll aber nur die betreffen die mit %name% anfangen!! Verstehst was ich meine?!


Gruß
Dani
Bitte warten ..
Mitglied: onegasee59
30.01.2007 um 22:55 Uhr
Es funktioniert alles bis auf die DO Anweisung in der IF - Anweisung!!

setzt mal die " bei do set "anweisung"

Matthias
Bitte warten ..
Mitglied: Dani
30.01.2007 um 23:06 Uhr
Hi,
thx.....aber hat au nix geändert!!!


Gruß
Dani
Bitte warten ..
Mitglied: bastla
31.01.2007 um 01:30 Uhr
Hallo Dani!

Und so?
01.
IF "%nr%" == "0" ( 
02.
    FOR /f %%b IN ('DIR "%dir_des%\%name%*.rar" /b /o-d') DO <b>(</b> 
03.
    SET archiv=%%b 
04.
    Echo Variable Archiv ist %archiv% 
05.
 
06.
    ::DEL "%dir_des%\%archiv%" 
07.
    ::rar.exe a -m5 -y "%dir_des%\%archiv%" "%dir_src%" 
08.
    <b>)</b> 
09.
) ELSE ( 
10.
    rar.exe a -m5 -y "%dir_des%\%name%%nr%.rar" "%dir_src%" 
11.
)
Grüße
bastla

[Edit] War schon etwas zu spät ... siehe daher besser unten [/Edit]
Bitte warten ..
Mitglied: SteinBeiser
31.01.2007 um 08:47 Uhr
SET archiv=%%b in ner FOR schleife bekommt immer den letzten wert
zum veranschaulichen:
FOR /f %%b IN ('DIR "C:\*.*" /b /o-d') DO ( SET archiv=%%b
Echo Variable Archiv ist %archiv%, %%b )
Bitte warten ..
Mitglied: bastla
31.01.2007 um 09:12 Uhr
... aber:
01.
Setlocal EnableDelayedExpansion 
02.
FOR /f %%b IN ('DIR C:\*.* /b /o-d') DO ( SET archiv=%%b 
03.
Echo Variable Archiv ist !archiv!, %%b )
Grüße
bastla
Bitte warten ..
Mitglied: Biber
31.01.2007 um 11:27 Uhr
Na ja, dann besser ganz auf die Zwischen-Variable %Archiv% verzichten.

01.
IF "%nr%" == "0" ( 
02.
    FOR /f %%b IN ('DIR "%dir_des%\%name%*.rar" /b /o-d') DO ( 
03.
     
04.
    Echo Variable Archiv ist %%b 
05.
 
06.
    ::DEL "%dir_des%\%%b" 
07.
    ::rar.exe a -m5 -y "%dir_des%\%%b" "%dir_src%" 
08.
09.
) ELSE ( 
10.
    rar.exe a -m5 -y "%dir_des%\%name%%nr%.rar" "%dir_src%" 
11.
)
HTH
Biber
Bitte warten ..
Mitglied: Dani
31.01.2007 um 17:58 Uhr
Hi @all,

@Biber
Naja...dann überschreibt er mir doch alle Archive. Es soll aber immer nur das Älteste ersetzt werden.

@bastla
Folgender Code bringt nur "ECHO ist....".
01.
FOR /f %%b IN ('DIR "%dir_des%\%name%*.rar" /b /o-d') DO ( 
02.
		SET archiv=%%b 
03.
		ECHO %archiv% 
04.
	)
Folgende Zeile bewirkt auch nichts!
01.
Setlocal EnableDelayedExpansion
Bitte warten ..
Mitglied: Biber
31.01.2007 um 18:38 Uhr
Sorry, Dani,

hast natürlich Recht.

bastla's Ansatz ist aber der Richtigere, nur die Klammer ist an der falschen Stelle bzw. überflüssig.
01.
....Setlocal EnableDelayedExpansion 
02.
FOR /f %%b IN ('DIR C:\*.* /b /o-d') DO SET archiv=%%b 
03.
Echo Variable Archiv ist !archiv! 
04.
...
HTH Biber
Bitte warten ..
Mitglied: Dani
31.01.2007 um 18:46 Uhr
Hi,
das mit den "!" funktioniert wirklich...THX

Jetzt würde mich schon interessieren, warum das so geht und mit "%" nicht?!
Weil ich habe andere Batchjobs mit dem gleichen Aufbau und dort geht es mit "%"!


Gruß
Dani
Bitte warten ..
Mitglied: Biber
31.01.2007 um 19:03 Uhr
....weil alles innerhalb der "IF.... ( ) ELSE (...)"-Anweisung für den CMD-Interpreter EINE Zeile, EINE Anweisung ist.
Und deshalb werden die Variablen EINmal aufgelöst.
Es sei denn, Du sagst ausdrücklich mit DelayedExpansion, dass Du es anders willst.

Biber
Bitte warten ..
Mitglied: Dani
31.01.2007 um 19:08 Uhr
Hi,
ist irgendwie schon komisch. Der Batch läuft unter WindowsXP einwandfrei. Bloß bei 2003 zickt er rum.
Dann weiß ich das für die Zukunft auch! Schönen Abend wünsch ich dir...


Gruß
Dani
Bitte warten ..
Ähnliche Inhalte
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 ...

Batch & Shell
Batch-Variable rechnet immer weiter
Frage von ZwergkaninchenBatch & Shell4 Kommentare

Hallo, Leute! Ich wollte mir ein kleines Idle-Game in Batch schreiben, aber ich komm nicht weiter. Hier ist ein ...

Batch & Shell
Batch: Variable einen Wert zuweisen
gelöst Frage von veniplexBatch & Shell7 Kommentare

Hallo zusammen! Ich bin gerade am verzweifeln Ich habe in Batch 2 Variablen: Wenn ich mir von diesen den ...

Batch & Shell

Rechnen mit Variablen - Batch Programmierung

gelöst Frage von LH.AppsBatch & Shell7 Kommentare

Bei folgendem Code gibt er immer mehrere Ergebnisse oder "ECHO ist ausgeschaltet (OFF)." aus: Optimierungsvorschläge? PS: Für die Variable ...

Neue Wissensbeiträge
CMS
Webinar: Multimandanten System
Information von corinnar vor 3 StundenCMS

Hallo an alle Open Source CMS-Interessenten, Magnolia und unymira leiten am 5. Juli ein Webinar zur Erstellung von Multimandanten ...

Windows Server
DP mit Benutzerdatenträger und VDS-SAN-policy
Tipp von lcer00 vor 1 TagWindows Server2 Kommentare

Hallo zusammen, ich habe gerade einen halben Tag mit Recherche zu dem Thema hinter mir und endlich ein Ergebnis. ...

Internet

Europa baut Zensurinfrastruktur auf: EU-Parlament stimmt für Upload-Filter, Leistungsschutzrecht und gegen KI-Forschung

Information von Frank vor 4 TagenInternet10 Kommentare

Eine sehr schlechte Entscheidungen für die Zukunft Europas ist gefallen: Der Rechtsausschuss im EU-Parlament stimmte heute morgen in einer ...

Windows 10

Mikrofon von Headset geht nach Update auf Windows 10 1803 nicht mehr

Tipp von Deepsys vor 6 TagenWindows 103 Kommentare

Ich verwende ein Plantronics Headset das per USB mit dem Windows 10 PC verbunden ist. Damit kann ich auch ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Sophos UTM 110 120 in Betrieb nehmen und IP Adresse am Cisco Switch herausfinden
Frage von KabuntelLAN, WAN, Wireless13 Kommentare

Hallo, ich mache in Rahmen meiner Umschulung zum Fachinformatiker - Systemintegration ein Praktikum. Gestern hat mir mein Chef gleich ...

Switche und Hubs
VPN Router empfehlung
Frage von mstSwitche und Hubs13 Kommentare

Moin Leute ich hab mal eine Frage an die VPN und Netzwerkprofis unter euch. Folgendes Szenario, ich habe einen ...

LAN, WAN, Wireless
Netzwerkverkehr bei WLAN-Repeater immer über Router?
Frage von ahussainLAN, WAN, Wireless12 Kommentare

Hallo, beim Einsatz eines WLAN-Repeaters baut dieser ja ein eigenes Funknetz auf. Mich würde interessieren, ob der Netzwerkverkehr immer ...

Windows 10
Was ist der "Windows Namespace" und warum UNC? Sophos Fehler
Frage von Ex0r2k16Windows 1011 Kommentare

Huhu, bei jeden regulärem Virenscan auf einem einzigen Client erhalte ich einen wilden False Positive (produkey): Datei "C:\Windows\CSC\v2.0.6\namespace\UNC Pfad ...