Tag: windows
zufaellige uhrzeit per windows batchdatei
ich weiss nicht mehr, wo ich das gefunden hatte… aber ich wills hier unbedingt mal festhalten 🙂
aufgabe: per batchdatei soll ein scheduled task angelegt werden. die startzeit soll eine “zufaellige” uhrzeit haben.
@echo off
setlocal enableDelayedExpansion
SET /a rand_min=!RANDOM!*59/32768+1
set /a rand_h=!RANDOM!*23/32768+1
if !rand_min! LSS 10 set "rand_min=0!rand_min!"
if !rand_h! LSS 10 set "rand_h=0!rand_h!"
SCHTASKS /Create /SC hourly /TN taskname /ST !rand_h!:!rand_min! /TR C:\temp\test.cmd
ganz schick auch das ergaenzen um die fuehrende null, wenn stunde oder minute einstellig sind.
und so legt man den startzeitpunkt zwischen 6 und 13 uhr (6+7=13).. in dem obigen schnipsel die zeile mit dem “set /a rand_h=…” austauschen durch diese drei zeilen:
set /a rand_h=!RANDOM!*6/32768+1
set /a rand_a=!RANDOM!*7/32768+1
set /a rand_h=rand_h+rand_a
windows 10 ohne reboot?
ueber windows update kann man ja windows 10 installieren…
und die meinen dann echt, dass man nur MÖGLICHERWEISE einen reboot machen muss?
wenn am SBS mal die uhr streikt
…z.b. weil die internetverbindung ausgefallen war und die eingebaute uhr nicht rund laeuft… und deswegen alle rechner im netz die falsche uhrzeit haben… dann mal mit diesen kommandos rumspielen:
überpruefen mit:
w32tm /query /source
konfigurieren kann man das mit:
w32tm /config /manualpeerlist:pool.ntp.org /syncfromflags:manual /reliable:yes
w32tm /config /update
net stop w32time && net start w32time
wenn die uhrzeit dann noch nicht stimmt:
w32tm /resync /rediscover
MSI: Failed while processing WebDirs. (-2147024894)
ist mir schon ein paar mal unter gekommen und ich musste jedesmal wieder nach der ursache suchen. daher hier als meine gedaechtnisstuetze:
im msi logfile steht dann sowas in der art:
ConfigureIIsExec: A matching web object in memory was found, but the web object in memory has no associated base
ConfigureIIsExec: Error 0x80070002: Failed to find Web base
ConfigureIIsExec: Error 0x80070002: Failed to get base of web for WebDir
ConfigureIIsExec: Error 0x80070002: failed while processing WebDirs
Error 26003. Failed while processing WebDirs. (-2147024894)
meiner erfahrung nach tritt dieser fehler immer dann auf, wenn man bei den einstellungen des IIS von den default einstellungen abweicht, die da waeren:
TCP port: 80
IP Address: (All Unassigned)
Host Header Value:
also einfach im IIS diese einstellungen temporaer zurueckdrehen.
windows applikation im kompatibilitaetsmodus
fuer manche komische software auf neueren windows versionen ist es “notwendig”, diese im kompatibilitaetsmodus auszufuehren. meist auch noch mit admin-rechten. in der gui sieht dsa so aus:
aber um z.b. installationen zu automatisieren, muss man das in der registry einstellen. wie immer entweder unter fuer einen einzelnen user unter HKEY_CURRENT_USER oder fuer alle user unter HKEY_LOCAL_MACHINE. unter “Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers” muessen fuer die jeweilige applikation nach folgendem muster eintraege angelegt werden:
moegliche werte dafuer sind:
Compatibility Modes
WIN95 -> Windows 95
WIN98 -> Windows 98
WIN4SP5 -> Windows NT 4.0 SP5
WIN2000 -> Windows 2000
WINXPSP2 -> Windows XP SP2
WINXPSP3 -> Windows XP SP3
VISTARTM -> Vista
VISTASP1 -> Vista SP1
VISTASP2 -> Vista SP2
WIN7RTM -> Windows 7
WINSRV03SP1 -> Windows Server 2003 SP1
WINSRV08SP1 -> Windows Server 2008 SP1
Display Settings
DISABLETHEMES -> Disable Visual Themes
640X480 -> Run in 640 x 480 screen resolution
HIGHDPIAWARE -> Disable display scaling on high DPI settings
256COLOR -> Run in 256 colors
DISABLEDWM -> Disable Desktop Composition
Privilege Level
RUNASADMIN -> Run program as an administrator
diese sind auch kombinierbar. und um dies nun wie angesprochen zu automatisieren, bietet sich ein befehl auf der kommandozeile an:
REG.EXE ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\temp\java.exe" /t REG_SZ /d "WIN7RTM RUNASADMIN" /f
that’s it.
bash: text dateien für windows nutzer aufbereiten
alle modernen betriebssysteme benutzen den “linefeed character (LF)” um einen zeilunumbruch in einer ascii datei zu machen. nur windows nicht. die benutzen einen “carriage return followed by a linefeed (CRLF)”. wenn man nun irgendwelche textfiles auf z.b. einem linux system generiert und auf einem windows rechner anschauen will, muss man nachhelfen. die von windows mitgebrachten anzeigeprogramme hauen sonst alles in eine zeile…
sed -i 's/$/\r/' datei.txt
that’s all.
verzeichnisse mit checksummen vergleichen (windows)
um unter windows zwei verzeichnisse (z.b. nach einem kopiervorgang) zu vergleichen, kann man sich das commandline tool “File Checksum Integrity Verifier” zu nutze machen.
das tool “fciv.exe” kann eine xml datei anlegen, welche die checksummen in folgendem format abspeichert:
die checksummen werden dabei base64 codiert gespeichert.
hier eine batchdatei, welche man im gleichen verzeichnis wie die fciv.exe ablegt. diese fragt das zu scannende verzeichnis ab und den pfad, in dem der output als xml datei abgelegt werden soll.
@echo off
set /p E1=Zu scannendes Verzeichnis:
set /p E2=Ausgabe der db.xml in Verzeichnis:
%cd%\fciv.exe -add "%E1%" -r -bp "%E1%" -both -xml "%E2%\db.xml"
pause
kurze erklaerung der parameter:
-add : checksummen fuer angegebene(n) datei/ordner erstellen.
-r : rekursiv inkl. unterverzeichnisse.
-bp : der “basepath” wird entfernt und nicht mit in der datei abgespeichert.
-both : es werden MD5 und SHA1 checksummen erzeugt.
-xml : ausgabe der ergebisse in die angegebene xml-datei
mit der folgenden batch kann man pruefen, ob die dateien in den verzeichnissen noch den urspruenglichen entsprechen (der parameter “-v” steht fuer “verify”)
@echo off
set /p E1=Zu scannendes Verzeichnis:
set /p E2=Pfad, in der die db.xml liegt:
%cd%\fciv.exe -v -bp "%E1%" -both -xml "%E2%\db.xml"
pause
dankenswerter weise gibt die fciv.exe beim verifizieren einen entsprechenden errorcode zurueck, so dass man das auch prima in skripten zur automatisierung benutzen kann. wie bei anderen programmen auch ueblich eine “0” für “alles in ordnung” und eine “1” fuer “fehlgeschlagen”.
in beiden batches wird der parameter “-bp” verwendet, damit nur relative pfade in der xml datei gespeichert werden. dies ist von noeten, wenn man quelle und ziel nach einem kopiervorgang vergleichen will und diese sich in unterschiedlichen pfaden befinden.
zeilenlänge in der /etc/hosts unter windows
der richtige name ist natuerlich %WINDIR%\system32\drivers\etc\hosts. wenn man mehrere namen zu einer ipadresse in diese datei schreibt, ist irgendwann scheinbar die “maximale zeilenlaenge” uebeschritten, wenn es um die verarbeitung geht. man kann also mit einem editor schoen lange zeilen mit vielen hostnamen rein donnern, aber verarbeitet wird nur eine bestimmte anzahl. abhilfe schafft die aufsplittung in mehrere zeilen. (das machts nebenbei auch uebersichtlicher)
der apple fuenf-finger-affengriff
um in einer remote desktop verbindung zu einem windows rechner unter osx ein “strg+alt+entf” zu senden, muss man auf einem apple notebook oder der kleinen tastatur die tasten “fn+ctrl+alt+cmd+del” druecken:
und wenn man aus versehen statt der “del” taste die darueber liegende “eject” taste drueckt, dann faehrt der apple rechner runter 😉