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, 9327 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
Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 18 StundenErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Vmware
VMware Updates gegen L1 Lücke
Information von sabines vor 1 TagVmware

Für die Vmware Produkte vCenter Server, ESXi, Workstation und Fusion stehe Updates bereit um die L1 Lücke zu schließen. ...

Drucker und Scanner
HP-MF-Drucker per Fax angreifbsr
Information von Lochkartenstanzer vor 3 TagenDrucker und Scanner4 Kommentare

Endlich eine sinnvolle Verwendung für Faxe: Damit kann man offensichtlich den Drucker übernehmen. lks

Router & Routing

Das pfSense Buch ist jetzt für jeden kostenlos zu beziehen

Tipp von magicteddy vor 3 TagenRouter & Routing2 Kommentare

Bisher war das Buch nur für zahlende Unterstützer verfügbar, jetzt steht für Jedermann kostenlos zur Verfügung. Siehe auch The ...

Heiß diskutierte Inhalte
Microsoft
VPN Verbindung kann nicht aufgebaut werden
Frage von AlexderITlerMicrosoft35 Kommentare

Hallo, Ich möchte an einem unserer PCs in unserer Tochterfirma eine VPN zu unserem Netzwerk einrichten. Das schlägt allerdings ...

Windows Server
Domäne einsilbig mit nur einem Namen benannt - sowie AD und MX auf einer VM Kardinalsfehler?
Frage von TomTestWindows Server32 Kommentare

Hallo liebe Freunde gepflegter Probleme, seit kurzem soll ich eine Domäne verwalten die zuvor von einem IT-Dienstleister erstellt und ...

Datenbanken
MySQL Datenbank Import Aufgabe für mehrere .csv dateien
gelöst Frage von Marcel1989Datenbanken19 Kommentare

Hi, ich komm nicht weiter. Ich hab auf einem Windows Server 2012 r2 eine MariaDB/MySQL laufen. Nun soll diese ...

DNS
Gibt es eine Art DNS Proxy?
Frage von icepietDNS15 Kommentare

Hallo Nerds, Ich würde gerne folgendes machen: ts.domain.de:3389 soll auf 1.2.3.4:3389 auflösen ts2.domain.de:3389 soll auf 1.2.3.4:3390 auflösen Gibt es ...