Ich hatte letztens mal drüber geschrieben: mit erweiterten Stringoperationen kommt man leicht an Dateinamen, Endung, Ordner, Pfade, Dateieigenschaften und Ähnliches.

Ich möchte gerne die Aussagen und den Code korrigieren. Ich hatte folgendes vorgeschlagen:
Dieser Code ist unsicher, lest weiter unten für einen zuverlässigeren Code!

:: nur der Dateiname (ohne .ext)
for %%a in (C:\test\geheim.txt) do set 1=%%~na
:: -> geheim
:: funktioniert auch mit Ordnern
for %%a in (C:\test\ziemlich\geheim) do set 1=%%~na
:: -> geheim

Letzte Datei und Ordner lassen sich so herausfinden. Ist auch korrekt, hat aber 2 Fehlerpotentiale:

Man sollte natürlich den Pfad, den man auswertet, in Gänsefüße stecken! Ansonsten gibt es nämlich Fehler sobald der gesuchte letzte Part (Dateiname/Ordnername) ein Leerzeichen enthält. Bei erweiterten Stringoperationen mit FOR sollte man doppelte Gänsefüße verwenden obwohl man sonst ja bei FOR Befehlen einfache nutzen sollte. Hier kommt es teilweise aber vor, dass im Ergebnis ein einfaches mit reingerät (“ geheim‘ „), was nicht gewollt ist. Doppelte Anführungsstriche sind hier zuverlässiger.

Ebenfalls wird es problematisch wenn man den letzten Ordnernamen sucht und dieser aber ein Punkt enthält („C:\Windows 3.1\“). For erkennt den Punkt und denkt, dass es sich um eine Datei handelt. Also gibt der Befehl „Windows 3“ zurück, dabei soll es „Windows 3.1“ zurückliefern.

Lösung:

:: Datei mit Anführungsstrichen und %%~n suchen!
for %%a in ("C:\test\geheim.txt") do set 1=%%~na
:: -> geheim
:: den letzten Ordner immer mit Anführungsstrichen und %%~nx suchen!
for %%a in ("C:\test\ziemlich\geheim 9.1") do set 1=%%~nxa
:: -> geheim

Die Windows 8 Metro UI… das Internet hasst und liebt es, gleichzeitig. Es gibt ein Tool, dass beide Gruppen nutzen können. Es kann sowohl den Metro Start Screen mit Power Options und beliebige Programme als Apps füllen als auch die komplette Metro UI deaktivieren.

Metro UI Tweaker:
Führt den Installer als Administrator aus und bestätigt die Änderungen am System (.NET Framework 3.5 und Windows Updates).
Mit dem Programm kann man die Metro UI teilweise oder komplett deaktivieren und Power Options als Apps dem Start Screen hinzufügen.
Ebenfalls lassen sich beliebige Programme als App-Kacheln hinzufügen. Ausnahmen wie cmd.exe bestätigen die Regel, das funktioniert nicht.

Intro

Ziel soll es sein, mittels eines „Batch Ping Skripts“ die Erreichbarkeit eines Server/Clients zu testen. Dabei wird der Ping-Befehl benutzt, welcher mit Hilfe von ICMP-„Echo Request“-Paketen ein Netzwerkgerät kontaktiert und für gewöhnlich eine Antwort von diesem erhält. Die Antwort kann dann in Form von errorlevel automatisiert ausgewertet werden um die Erreichbarkeit anzugeben. Aber: Beim Batch Erreichbarkeits-Test mittels Ping gibt es Details, die beachtet werden müssen – der errorlevel kann trügen.

Technische Hintergründe

Die normale ICMP-Anfrage via CMD kann 3 verschiedene Ergebnisse erzeugen:
Normaler ping ohne Parameter von 192.168.178.20 zu 192.168.178.88:
Zeitüberschreitung der Anforderung“ – der Client antwortet nicht und keine andere Vermittlungsstelle reagiert. Der Errorlevel ist 1.
Antwort von 192.168.178.13: Zielhost nicht erreichbar.“ – der Ziel-Client antwortet nicht aber eine andere Gegenstelle reagiert. Gateway, Router, Switch o.Ä. melden, dass dieser Client zwar im Netzwerk gefunden wird aber auf den Ping nicht reagiert, ihn nicht auflösen kann oder etwas in der Art. Der Errorlevel ist 0! Obwohl der Ziel-Client nicht erreichbar ist wird der Rückgabewert 0 für erfolgreich zurückgeliefert.
Antwort von 192.168.178.88: Bytes=32 Time<1ms TTL=128“ – die Ziel-Client ist erreichbar, der Errorlevel ist 0.

Lösung – Code

Möchte man die tatsächliche Erreichbarkeit des Ziel-Clients erfassen, ist folgender Weg nötig:

REM Aufteilen der IP für bessere Automatisierung mehrerer Clients eines Netzes
set ipnetz=192.168.178
set serverip=88
ping %ipnetz%.%serverip% -n 2 -w 1000 -l 2000
if %errorlevel%==1 echo Fehler

Mit -l wird die Größe des Ping Pakets bestimmt, -w bestimmt die Wartezeit in Millisekunden. Beide Parameter in Kombination sorgen dafür, dass der Ping nur noch eine Zeitüberschreitung oder einen Erfolg liefern kann. Das Verwenden von Errorlevel ist somit also sicher.

Alternative:

ping  %server_ip% -n 1 -w 1000 -l 2000 -4 | find /i "TTL" >nul 2>&1
if errorlevel 1 (
echo Server offline
) else (
echo Server online
)

via Kommentar von Gerd – funktioniert ebenfalls zuverlässig, optimiert mit dem -4 Parameter, danke Rudolph.
batch-ping-erreichbarkeit-online-test-script


Update: Überlegung: 2000 Byte Pakete mit einem maximalen Zeitlimit von 1000 Millisekunden… dadurch ist zwar ein Ping bei 2 gut angebundenen Clients entweder erfolgreich oder komplett nicht erfolgreich. Was passiert aber mit 2 sehr langsamen Clients? Wenn der Zielhost eigentlich erreichbar wäre aber es in 1 Sekunde nicht schafft auf das 2KB Ping Paket zu antworten. Wäre das dann ebenfalls negativ? Eine solche Situation ist wohl eher nicht üblich, wenn nicht sogar recht unwahrscheinlich, aber rein logisch könnte sie Probleme bereiten. Wer dazu Anmerkungen hat, bitte kommentieren!

Die Windows 8 Developer Preview ist Englisch. Coole Sache, allerdings bei Tastatureingaben hört der Spaß auf. So stellt man das Tastaturlayout auf Deutsch und ermöglicht auch die deutsche Touch Tastatur.

Control Panel -> More Settings -> Change Keyboards and other input methods -> Add a language -> [G]ermany (2x auswählen) -> (Germany anklicken) Move Up -> Advanced Settings

„Text input options“ -> German
Touch keyboard -> [X] „Enable the compatibiity touch keyboard“

Nun ist die deutsche Tastatur eingestellt und man kann auch die Layouts in der Touch Tastatur via Button wechseln.

Klingt einfach, hat aber einige Stolpersteine zu bieten.

Ich wollte Windows 8 in einer VM einrichten und testen.
Zuerst hatte ich noch VMware Player installiert, irgendeine alte Version, 2 oder 3 oder so. Neue VM erstellt, 2 Kerne, 3GB RAM, 30GB HDD. Die Minimalanforderungen sprechen von 1GHz, 1GB RAM (2GB für x64) und 16/20GB HDD.
Die Windows 8 ISO eingebunden und hochgefahren.
Bluescreen

HAL_INITIALIZATION_FAILED“ ist also der erste Fehler. Hier sehen wir auch gleich das neue Design eines Bluescreens. Dieser soll einfacher erkennbar machen, welcher Fehler aufgetreten ist. Stimmt, mehr als der Fehler und etwas statischer Text wird ja jetzt auch nicht mehr angezeigt.
Dieser Fehler kann einige Ursachen haben. In Verbindung mit Windows 8 und Virtualisierung gibt es allerdings nur wenige passende Erklärungen. Eine lautet: die Virtualisierungssoftware ist zu alt und kann den neuen Hardware Abstaction Layer von Windows 8 nicht ordentlich bedienen. Diese Seite behandelt den Fehler recht übersichtlich.

VMware Workstation 8 ist eine der neuen Virtualisierungssoftware, die Windows 8 beherrscht. Diese kann man 30 Tage lang kostenlos testen. Also download und dort den Spaß nochmal. ISO eingebunden, gestartet, ab in die Installation!
Doch schon am Anfang der Installation das nächste Problem:

Windows cannot read the setting from the unattend answer file.“ Welche unattend answer file?? Falsches Image? Nein, VMware Standardeinstellung glaube ich. Bin mir nicht sicher ob das bei anderen Virtualisierern auch kommt.
Jedenfalls müsst ihr die Einstellungen der VM öffnen und die Floppy Komponente verändern. Dort ist nämlich eine solche Antwortdatei eingestellt. Am besten einfach Floppy deaktivieren.

Nun startet auch die Installation endlich. Die Schritte sind direkt im neuen Metro Look. Regler lassen sich anklicken oder schieben. Warum Mini-Schieberegler wo man erstmal überlegen muss wie man ihn jetzt benutzt? Keine Ahnung, ich finds irgendwie unnötig. Checkboxen tun ihren Job seit Jahrzehnten.

Informationen an Microsoft senden?

Windows Live ID oder doch lokale Computeraccounts? Mit einer Windows Live ID werden Einstellungen, Apps und vieles mehr synchronisiert. Zudem wird SkyDrive direkt eingebunden glaube ich. Mehr dazu zum Beispiel hier. Ich werde allerdings alles lokal testen, soll fürs Erste reichen. Also unten auf das unscheinbare „Don’t want to log in with a Windows Live ID?“ geklickt.

Sobald die Installation durchgeklickt ist erscheint der neue Metro Startbildschirm. Hier werden Apps und Widgets aufgereiht und angezeigt. Über die Verwendung dieser neuen Oberfläche kann man etliche Posts schreiben. Davon gibt es aber schon genug im Netz.

Bei VMware sollte der nächste Weg die Installation der VMware Tools sein. Diese verbessern erfahrungsgemäß Kompatibilität und Performance der VM.

Das wars zur Installation in VMware. Nun gibt es in Windows noch viel zu tun. Schon die erste Stunde wirft viele Fragen auf und ich kam aus dem Grummeln gar nicht mehr raus. Aber dazu später mehr.

Memo an mich, Nutzer automatisch beim Start einloggen:

Via GUI

netplwiz

oder

control userpasswords2

starten.
Dann den Haken bei „Benutzer muss Benutzername und Passwort eingeben um den Computer benutzen zu können“ entfernen, Übernehmen, Passwort eingeben.

Funktioniert nicht bei Domänencomputern. Daher diese Alternative.
Via Registry

HKLM\Software\Microsoft\Windows NT\CurrentVersion\winlogon

:
AutoAdminLogon = 1
DefaultUserName = testuser
DefaultDomainName = DOMAIN (optional natürlich)
DefaultPassword = g3h3!m
(alles Strings, die letzten 2 müssen selber erstellt werden)

Bei Windows 8 funktioniert das ebenfalls, gleicher Registry Key/Pfad, gleicher netplwiz Wizard, gleiches Verfahren.

Erledigt!

Windows hat sich bei den Windows Updates festgefahren, manche Updates werden nicht heruntergeladen, nicht installiert o.Ä.? Eventuell wird auch die CBS.log dauerhaft geschrieben, erreicht Größen von über 200MB, der TrustedInstaller.exe oder msiexec.exe belasten für Stunden den Prozessor ohne dass der eigentliche Grund bekannt ist?
Bei 2 Sony VAIOs konnte ich letzteres Update Problem feststellen.

Zuerst sollte man die Windows Updates deaktivieren.

Öffnet die Dienste-Übersicht (services.msc) und sucht „Windows Update“, deaktiviert den Dienst. Alternativ

net stop wuauserv

in der CMD.
Vermutlich lässt sich der Dienst nicht beenden weil er im Hintergrund ja ordentlich am Rödeln ist.

Startet den Computer neu; notfalls mit Power-Taste-gedrückt-halten wenn beim Herunterfahren ewig „Konfigurieren von Windows wird vorbereitet. Bitte schalten Sie den Computer nicht aus“ steht.
Direkt nach dem Hochfahren einloggen, die Dienste-Übersicht (services.msc) öffnen und den Dienst „Windows Update“ auf den Starttyp „Manuell“ stellen. Der Windows Update Dienst startet mit einem verzögerten Start, kann also nach dem Hochfahren ohne Probleme deaktiviert werden.
Mit

net stop wuauserv

in der CMD vergewissern.

Nun kann man die Windows Updates zurücksetzen.
Da reicht es schon den

C:\Windows\SoftwareDistribution

Ordner umzubenennen, „SoftwareDistribution_BAK“ z.B.
Nun könnt ihr den Update Dienst wieder aktivieren und der Ordner wird neu erstellt. Dadurch werden alle Updates neu gesucht, neu geladen, initialisiert usw.
Wenn alles problemlos abläuft könnt ihr den umbenannten Ordner löschen, nimmt nur Platz weg.

Sollte es immernoch Probleme geben: OS neu installieren oder Updates deaktivieren: Systemsteuerung -> Windows Update, links im Menü „Einstellungen ändern“ und dann im Dropdown „Nie nach Updates suchen (nicht empfohlen)“ auswählen.