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 Cmd If ()else(if) geht nicht

Mitglied: Saschaaaaa

Saschaaaaa (Level 1) - Jetzt verbinden

11.04.2016, aktualisiert 12.04.2016, 842 Aufrufe, 2 Kommentare, 1 Danke

Hallo Leute,

ich habe mir ein kleines Script erstellt welches den PC herunterfährt wenn er 90 Minuten im Leerlauf ist UND ein bestimmter Ordner leer ist. Bekomme nun aber immer einen Fehler wenn ich beide Bedingungen erfüllt haben will. Einzeln funktionieren beide...

Es sieht so aus:
01.
@echo off
02.
FOR /F "tokens=5 delims=^ " %%a IN ('quser ^| find ^"^>^"') do @set va=%%a
03.
FOR /F "tokens=1 delims=^+" %%a IN ("%va%") do @set /A vt=%%a
04.
FOR /F "tokens=2 delims=^+" %%a IN ("%va%") do @set vg=%%a
05.
FOR /F "tokens=1 delims=^:" %%a IN ("%vg%") do @set /A vh=%%a
06.
FOR /F "tokens=2 delims=^:" %%a IN ("%vg%") do @set /A vm=%%a
07.
set /A vt=%vt%*1440
08.
set /A vh=%vh%*60
09.
set /A idle=%vt%+%vh%+%vm%+90 (Hier wird die Zeit seit einschalten des PC + 90 minuten in eine Variable gesetzt. Normalerweise sollte quser die idle zeit angeben, unter win10 bei mir komischerweise ist es die zeit seit systemstart....)
10.
:mpun
11.
.
12.
. (unerheblich, das kann ich garantieren)
13.
.
14.
for /f %%k IN ('dir "D:\Downloads\extracted\d\VideoQueue" /b /s /A-D ^| find /c /v ""') do @( (Hier springt er raus wenn die untere if %cridle% GTR %idle% drinnen ist, ohne die gehts)
15.
	if %%k GTR 0 (
16.
		timeout 10
17.
		goto mpun
18.
	) else (
19.
		timeout 30
20.
		for /f %%m IN ('dir "D:\Downloads\extracted\d\VideoQueue" /b /s /A-D ^| find /c /v ""') DO @(
21.
			FOR /F "tokens=5 delims=^ " %%a IN ('quser ^| find ^"^>^"') do @set va=%%a
22.
			FOR /F "tokens=1 delims=^+" %%a IN ("%va%") do @set /A vt=%%a
23.
			FOR /F "tokens=2 delims=^+" %%a IN ("%va%") do @set vg=%%a
24.
			FOR /F "tokens=1 delims=^:" %%a IN ("%vg%") do @set /A vh=%%a
25.
			FOR /F "tokens=2 delims=^:" %%a IN ("%vg%") do @set /A vm=%%a
26.
			set /A vt=%vt%*1440
27.
			set /A vh=%vh%*60
28.
			set /A cridle=%vt%+%vh%+%vm%
29.
			if %%m GTR 0 (
30.
				timeout 10
31.
				goto mpun
32.
			) else (
33.
				if %cridle% GTR %idle% ( ----------------(das hier sorgt für den Fehler, Rausspringen tut er aber oben....)
34.
					shutdown -s -t 0
35.
				) else (
36.
					timeout 10
37.
					goto mpun
38.
				)
39.
			)
40.
		)
41.
	)
42.
)
wenn ich nun in einer batch nur das habe funktioniert es....
if %cridle% GTR %idle%
shutdown -s -t 0
) else (
timeout 10
goto mpun
) (Natürlich werden vorher beide variablen genauso gesetzt wie oben)

Wieso klappt das nicht? hatte auch schon:
) elseif %cridle% GTR %idle% (.....
Das geht auch nicht....

1. Warum klappt das nicht?
2. Warum zeigt quser nicht mehr die leerlaufzeit an (es steht leerlaufzeit dort, ist aber seit systemstart)

Bin dankbar für jeden Tipp

Mit freundlichen Grüßen
Sascha

[Edit Biber] Codeformatierung, weil sonst keine Chance auf sinnvolle Hinweise. [/Edit]
Mitglied: rubberman
LÖSUNG 11.04.2016 um 23:00 Uhr
Hallo Sascha,

dein Code ist aufgrund fehlender Codeformatierung und wahllos hineingeschriebener Kommentare unlesbar. Ich vermute folgendes:
Variablen werden in einer Kommandozeile oder in einem, in Klammern eingefassten, Block von Kommandozeilen, nur einmal zum Wert expandiert.
Beispiel:
01.
@echo off &setlocal
02.
set "x=0"
03.
echo davor: %x%
04.
for /l %%i in (1 1 3) do (
05.
  set "x=%%i"
06.
  echo im Block: %x%
07.
)
08.
echo danach: %x%
09.
pause
Bei einer Variable, die vor dem Block nicht definiert war, expandiert die Variable zu "nichts", was bei einem Vergleich einen Syntaxfehler auslöst, da dann auf der Seite mit der Variable das == allein steht.
Abhilfe könnte die verzögerte Variablenerweiterung sein.
01.
@echo off &setlocal EnableDelayedExpansion
02.
set "x=0"
03.
echo davor: %x%
04.
for /l %%i in (1 1 3) do (
05.
  set "x=%%i"
06.
  echo im Block: !x!
07.
)
08.
echo danach: %x%
09.
pause
Besser wäre aber, gleich mit der FOR Variablen zu arbeiten.

Grüße
rubberman
Bitte warten ..
Mitglied: Saschaaaaa
12.04.2016 um 22:09 Uhr
Sorry für die fehlende Formatierung!

Aber danke du hattest Recht.

Zitat von rubberman:
Bei einer Variable, die vor dem Block nicht definiert war, expandiert die Variable zu "nichts", was bei einem Vergleich einen Syntaxfehler auslöst, da dann auf der Seite mit der Variable das == allein steht.

Die Variable muss vor der For Schleife definiert werden!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

CMD- For-Schleife geht mal und mal nicht?!?

gelöst Frage von CaddyMBatch & Shell5 Kommentare

Hallo zusammen, Ich hab seit einiger Zeit (nach irgendeinem Windowsupdate, keine Ahnung welches das gewesen sein könnte) ein Problem ...

Windows Tools

Bootfähige CMD

Frage von M.MarzWindows Tools4 Kommentare

Hallo zusammen, ich würde gerne wissen, ob es ein Tool für Windows gibt um vom USB Stick beim Booten ...

Batch & Shell

CMD: Unterschiede bei cmd Dateien in der Ausführung

gelöst Frage von ralfkauskBatch & Shell10 Kommentare

Hallo zusammen Ich habe gerade ein kleines Verständnisproblem. Durch ein Powershell Skript habe ich mir etliche .cmd Dateien erstellen ...

Batch & Shell

Drucken via CMD

gelöst Frage von playmenBatch & Shell15 Kommentare

Hallo Ich brauche unbedingt ein Batch Skript welches auf ausgewählten Netzwerkdrucker einen Einsatzplan druckt. Printserver: SRVPRN001 Druckernamen: PRN001, PRN002, ...

Neue Wissensbeiträge
Windows 7

Südkoreas Regierung setzt auf Linux, um Windows 7 Clients abzulösen

Information von kgborn vor 3 StundenWindows 7

Kleiner Infosplitter zum Wochenanfang: Während München (LiMux) und die niedersächsische Finanzverwaltung von Linux auf einen Windows 10-Client (und Office) ...

Internet
Big Brother is Watching You
Information von transocean vor 14 StundenInternet

Moin, die Datenkrake Google fischt Informationen über Einkäufe ab, die GMail Nutzer im Netz tätigen. Gruß Uwe

Datenschutz
TeamViewer gehackt !
Information von aqui vor 16 StundenDatenschutz4 Kommentare

Hat schon einen Grund warum verantwortungsvolle Admins diese Software nicht einsetzen und sie in den meisten größeren Firmen aus ...

Netzwerke

Cisco Security Warnung für SoHo Switches der SG Serie

Information von aqui vor 1 TagNetzwerke3 Kommentare

Update auf eine aktuelle Version wäre also eine gute Idee ! ;-)

Heiß diskutierte Inhalte
Netzwerkgrundlagen
Netzwerk IP Kamera nur an einem Rechner sichtbar
Frage von Lutz-ReNetzwerkgrundlagen8 Kommentare

Guten Abend Ich hab in einem IP 4 Netzwerk mit gleichen Subnetz zwei Kameras mit festen IP Adresse und ...

Verschlüsselung & Zertifikate
Verschlüsselungsmethoden für Netzwerkdateien im Firmennetzwerk
Frage von kafipauseVerschlüsselung & Zertifikate7 Kommentare

Hallo, ich suche für meine Firma eine Verschlüsselungssoftware, um einige Ordner auf einem Fileserver zu verschlüsseln und verschiedenen Gruppen ...

Microsoft Office
Office 2010, 2013, 2016 und 2019 auf einem PC ohne Dualboot?
gelöst Frage von RT81-2019Microsoft Office6 Kommentare

Office 2010, 2013, 2016 und 2019 auf einem PC ohne Dualboot? In wie fern ist es möglich, das 2010 ...

LAN, WAN, Wireless
OpenVpn - Options error: Maximum option line length (256) exceeded - Editor Notepad++
Frage von mike7050LAN, WAN, Wireless5 Kommentare

Hallo zusammen, ich komme nicht mehr weiter leider: Ich habe OpenVPN auf zwei Windows 10 Pro Notebooks eingerichtet. Notebook ...