Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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, 8803 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
Zu viele Variablen in Batch-Script? Speicherproblem? (2)

Frage von dolsch zum Thema Batch & Shell ...

Batch & Shell
gelöst Variablen Zusammenbauen 2.0 ( Batch ) (6)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Grosses Variablen Problem ( Batch) (30)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst FOR Loop Variablen ( Batch ) (2)

Frage von clragon zum Thema Batch & Shell ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Monitoring
Netzwerk-Monitoring Software (18)

Frage von Ghost108 zum Thema Monitoring ...

Windows 10
Seekrank bei Windows 10 (17)

Frage von zauberer123 zum Thema Windows 10 ...

Windows Server
gelöst Kopiervorgang schlägt fehl, weil Datei- und Ordnername zu lang sind (14)

Frage von Schroedi zum Thema Windows Server ...

Windows 10
Windows 10 Fall Creators Update Fehler (13)

Frage von ZeroCool23 zum Thema Windows 10 ...