Archiv der Kategorie: Batch

Windows Update im Griff: ABC-Update

Ich war lange Zeit auf der Suche nach einem Tool, mit dem ich den Windows Update Prozess etwas besser im Griff haben kann.

Lange habe ich mit dem WSUShelper von Wolfgang Fuehrer gearbeitet, allerdings benötige ich zur Ergänzung noch ein Tool, mit dem ich den Update Prozess sofort starten kann.

Hier setzt jetzt das Tool ABC-Update an, welches von Flemming Varmer kostenlos zur Verfügung gestellt wird.

Mit diesem Tool kann man die Updates entweder direkt von Microsoft holen

 ABC-Update.exe /A:Install 

oder von einem WSUS-Server, den man im eigenen Netz hat

 APC-Update.exe /S:WSUS /A:Install /R:N 

(Installiert alle verfügbaren, aber noch nicht installierten Updates ohne Reboot)
Interessant ist auch, dass man für den WSUS Server unterschiedliche Ports angeben kann (also Port 80 oder 8530).

Hier noch die Übersetzte Beschreibung des Programmes von der Webseite:

ABC-Update
ist ein einfach zu bedienendes Tool, mit dem Sie die Kontrolle über MS-Update-Vorgänge behalten.

Mit ABC-Update erhalten Sie die Updates genau dann, wenn Sie sie benötigen, und können auch maximale Neustarts definieren, Filteroptionen verwenden, um Updates anhand von Patchdaten, KB-Artikeln und Update-Kategorien auszuwählen.
Das Tool hat eine GUI- und eine Kommandozeilenversion und ermöglicht es Ihnen, Update-Operationen auch dann zu skripten, wenn Sie diese benötigen. Da Sie das Tool auch von der Kommandozeile aus aufrufen können, ist es gut geeignet für die Verwendung mit Software-Verteilungstools wie ABC-Deploy, MS SCCM und anderen.

Sie haben die Kontrolle. Kein Warten mehr auf automatische Updates.
Getestet OK von Windows XP/2003 und höher

Diese Lücke zwischen dem, was Microsoft direkt nach dem Auspacken anbietet, und dem, was viele Administratoren wirklich wollen, ist das, was das ABC-Update-Tool ausfüllen soll.

 

ECHO‘ is not recognized as an internal or external command,

Hin und wieder verwende ich zum Bearbeiten von Scripts die Software „Visual Studio Code“. Schlicht und ergreifend, weil ich diesen Editor umstellen kann, sodass der Hintergrund dunkel ist, was für die Augen ganz angenehm ist.

Wenn man allerding mit Code ein neues Batchfile erstellt, kann es passieren, dass man beim späteren Ausführen auf folgenden Fehler stösst:

C:\Windows\system32>´++@ECHO OFF
‚´++@ECHO‘ is not recognized as an internal or external command, operable program or batch file.

Nach einigem Gesuche bin ich dann schnell auf die Ursache gestossen:
Microsoft Visual Code verwendet utf-8 als Standardcodierung. Somit ist das Batch nicht richtig lesbar.
Abhilfe schafft man dadurch, dass man das Batch mit Notepad öffnet und bei „Speichern als…“ die Codierung auf ANSI umstellt.

ANSI Echo offBeim Öffnen bestehender Batchfiles habe ich das Problem noch nicht gehabt.
Wenn man möchte, kann man das umgehen, indem man in „Visual Studio Code“ die Standardcodierung umstellt:
Unter Files –> Preferences –> Settings findet man folgenden Eintrag:

// The default character set encoding to use when reading and writing files.
„files.encoding“: „utf8“,

Hat man die Zeile ausgewählt, kann man links auf ein Stiftsymbol klicken und hat dann die Auswahl aus den einstellbaren Zeichensätzen.

brace expansion: Verzeichnisse erstellen und löschen

Wenn man ein Verzeichnis mit mehreren Unterordnern erstellen will, kann man natürlich per mkdir jeden Ordner einzeln anlegen.
Das Ganze kann man allerdings auch einfacher haben.

Konkretes Beispiel: Beim Anlegen von Projektverzeichnissen kann es hilfreich sein, wenn man die benötigten Unterordner gleich mit erstellen kann:

sudo mkdir -p /Projekte/Nummer220/{Hardware,Software,Dokumentation}

Das ‚-p‘ muss mitgenommen werden, da dadurch die benötigten übergeordneten Verzeichnisse (in diesem Fall die ‚Nummer220‘) erstellt werden.
Im Verzeichnis ‚/Projekte‘ wird nun ein Ordner ‚Nummer 220‘ mit den Unterordnern ‚Hardware‘, ‚Software‘ und ‚Dokumentation‘ angelegt.

Was für das Erstellen von Verzeichnissen gilt, geht auch beim Löschen.
Will man das Projektverzeichnis behalten, aber die Unterordner löschen, kann man das mit folgendem Einzeiler tun:

 sudo rm -r /Projekte/Nummer220/{Hardware,Software,Dokumentation}

Wichtig ist dabei, dass man das ‚-r‘ für rekursiv setzt, da man ansonsten einige Fehlermeldungen bekommt, da ‚rm‘ ansonsten von Dateien ausgeht und den Dienst verweigert.

Windows: Uptime anzeigen

Will man sich nur die Startzeit des Systems anzeigen lassen, tippt man in der Commandline einfach ’starttime‘ ein.
Kein Schnick, kein Schnack, kein Taskmanager usw.

Ich habe mir jetzt folgendes Batch erstellt und in C:\Windows\System32\EigeneBatches gespeichert:

@echo off
:: Autor:            Peter Maier
:: Datum:            17.06.2016
:: Dateiname:        starttime.bat
:: Beschreibung:    Zeigt die Startzeit eines PCs an. 
:: Verwendung:        cmd --> starttime
:: Abhängigkeiten:    Bordmittel
:: Quelle:             http://www.psteiner.com/2013/05/windows-uptime.html
::#######################################################
:: Variablen
:: Funktionen
:: Eigentliches Script
:: englisches Windows
:: for /f "tokens=1,2,*" %%i in ('net statistics workstation ^| find "since"') do @echo %COMPUTERNAME% up since %%k
::deutsches Windows
for /f "tokens=1,2,*" %%i in ('net statistics workstation ^| find "seit"') do @echo %%k

Ich habe den ursprünglichen Teil für ein englisches Windows mal drin gelassen. Sollte es nicht funktionieren, muss man ggfs. einfach mal ’net statistics workstation‘ auf der Kommandozeile ausführen.
Dann hat man schon mal die Info, welche Informationen es hier gibt.
Im deutschen Text steht in der Zeile z.B.

Statistik seit 22/06/2016 13:56:21

Wenn man es sich in der System32 ablegt oder eine PATH Variable auf das passende Verzeichnis setzt, kann man nun einfach ’starttime‘ eingeben und bekomt die gewünschte Info.

Linux: Dateiliste mit ls und voller Pfadangabe

Gesucht war eine Auflistung aller Dateien eines Ordners mit absolutem Pfad

-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test1/file1
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test1/file2
Hier ist die Lösung, die ich dazu gefunden habe:

find /tmp -type f -print0 | xargs -0 ls -laS | sed -r ’s#( +)#\t#1′ | sed -r ’s#( +)#\t#1′ | sed -r ’s#( +)#\t#1′ | sed -r ’s#( +)#\t#1′ | sed -r ’s#( +)#\t#1′ | sed -r ’s#( +)#\t#3′

 

Ergebnis:

-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test1/file1
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test1/file2
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test1/file3
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test1/file4
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test2/file1
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test2/file2
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test2/file3
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test3/file1
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test3/file2
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test3/file3

 

Beziehungsweise:

find /tmp -type f -print0 | xargs -0 ls -laS | sed -r ’s#\S+\s+\S+\s+\S+\s+\S+\s+(\S+)\s+(\S+\s+\S+\s+\S+)\s+(.*)#\1\t\2\t\3#‘
als etwas kürzere Variante  🙂

 

gefunden habe ich das hier:
http://www.fedoraforum.de