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

Frage Entwicklung Batch & Shell

Mitglied: Dani

Dani (Level 5) - Jetzt verbinden

30.01.2007, aktualisiert 31.01.2007, 8880 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
Verwendung einer gesetzten Variable noch in derselben Eingabezeile
gelöst Frage von EvaEdenBatch & Shell9 Kommentare

Liebe Gemeinde, ich habe ein simples Problem: Ich muss ein paar Befehle in einer Zeile abschicken. Kein Problem, da ...

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 sklaimBatch & Shell7 Kommentare

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

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 12 StundenWindows 101 Kommentar

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 13 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.