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, 9686 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
Sicherheit
Millionen Euro in den Sand gesetzt?
Information von transoceanSicherheit3 Kommentare

Moin, der Bundestrojaner ist offenbar für die Katz. Gruß Uwe

Outlook & Mail

OL 2010 Abwesenheit kann nicht gesetzt werden

Frage von xbast1xOutlook & Mail

Hallo, folgende Problematik: Benutzer hat zwei Postfächer im OL eingebunden, Postfach A und Postfach B. Bei Postfach A konnte ...

Windows Server

Terminalserver 2016 Standarddrucker gehen verloren oder werden nicht gesetzt

gelöst Frage von hasel123Windows Server4 Kommentare

Hallo zusammen, ich habe folgendes Problem: Derzeit sind 2 Terminalserver 2016 Standard im Einsatz, sowie auch diverse Netzwerkdrucker. Immer ...

Webbrowser

Firefox 60 - Startseite kann nicht per ADM gesetzt werden

gelöst Frage von DerWoWussteWebbrowser2 Kommentare

Moin. Hat noch jemand bemerkt, dass der neue Firefox, welcher mit GPO-Unterstützung daherkommt, nicht alle GPOs auch umsetzt? Ich ...

Neue Wissensbeiträge
Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 16 StundenInternet2 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 20 StundenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 1 TagWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Sicherheit

Heise Beitrag Passwort-Sammlung mit 773 Millionen Online-Konten im Netz aufgetaucht

Information von Penny.Cilin vor 1 TagSicherheit6 Kommentare

Auf Heise Online ist folgender Beitrag veröffentlicht worden: Heise Beitrag passwörter geleakt Ich bin mir jetzt nicht ganz sicher, ...

Heiß diskutierte Inhalte
Windows Server
Uhren gehen immer wieder falsch
Frage von killtecWindows Server23 Kommentare

Hallo, ich habe folgende Konstellation: 1. Physischer DC Div. Virtuelle DC's auf Hyper-V Servern Die Hyper-V-Server, der Physische DC ...

Batch & Shell
Mit findstr batch doppelte zeilen einer txt löschen
Frage von Burningx2Batch & Shell21 Kommentare

Hi Vor einer weile habe ich im netzt einen windows shell befehl gefunden mit welchem man über die konsole ...

Verschlüsselung & Zertifikate
Netzwerkfreigabe Verschlüsselung
Frage von grill-itVerschlüsselung & Zertifikate20 Kommentare

Moin zusammen, sicher nutzen hier die ein oder anderen ein Produkt zur Verschlüsselung von Netzwerkfreigaben/-laufwerken auf denen hochsensible Daten ...

Debian
OpenSSH Login mit Public Key schlägt fehl, mit Passwort funktioniert
gelöst Frage von DKowalkeDebian19 Kommentare

Hallo zusammen, ich hatte hier schon nach einer Anleitung für einen SFTP Server mit Linux gefragt, habe dort auch ...