Truma SecuMotion defekt – Keine Heizung im Wohnmobil

Auf unserer Fahrt nach Hamburg zum 33c3 kurz angehalten, um kurz einen Kaffee zu trinken und die leckeren lila Berliner mit Pflaumenmuß-Füllung essen. Dazu kurz die Heizung an. – Soweit der Plan…
Aber: Heizung auf 19°C eingestellt, summ-brumm, klick, aber danach kam nicht das gewohnte Zünden es Brenners, sondern: Nichts. – Naja, nicht Nichts, sondern eher negativ: Die Gassicherung hatte den Gasfluss unterbrochen und damit auch die Flamme für das Kaffee-Wasser gelöscht.
Ok, kann ja mal passieren. Also ausgestiegen, Gaskasten auf und die Gassicherung wieder initialisieren, Gaskasten wieder zu, einsteigen, Kaffee-Wasser wieder an uuuund: Heizung wieder an. – Und ihr ahnt es: Zapp, wieder alles aus.
Gut, das Ganze Spielchen haben wir dann noch mit den zwei verfügbaren Gasflaschen in allen Kombinationen durchgeführt, aber mit immer dem auch endgültigen Ergebnis, dass die Heizung nicht funktioniert. 🙁
Also mit einer Stunde Verspätung weitergefahren, von unterwegs noch ein Hotelzimmer organisiert (bei nachts 5°C wäre eine Übernachtung im WoMo nicht tödlich, aber der Genesung von meinem Schnupfen nicht zuträglich) und schonmal abgecheckt, ob und wo es Support für die Truma-Heizung in Hamburg geben könnte.
Im Hotel gut geschlafen und morgens nach Duschen und einem Kaffee nach ziemlich viel Herumtelefonieren bei einem geöffneten Wohnmobil-Service eingefunden.
Dort hat der Spezialist auch nach einem Telefonat mit dem Truma-Support herausgefunden, dass die eingebaute fünf Jahre alte “Truma SecuMotion”, die bei plötzlichem, großem Gasstrom die Gaszufuhr ganz abstellt wohl defekt, etwa verstopft war. Sie ließ zu wenig Gas durch, so das die Menge noch für den Gasherd und den Gasbetrieb des Kühlschrank ausreichte, aber nicht für die “Truma Combi 4” Heizung. Dies erklärte wohl auch die anderen -eher sehr- sporadischen Ausfälle ähnlicher Art in der Vergangenheit.
Das zum Heizen und Kochen in Flaschen abgefüllte Propan und Butan ist ja eigentlich ein Abfallprodukt, dass bei der Erdölförderung anfällt. Es enthällt einen kleinen Anteil an mikroskopisch kleinen Öltröpfchen, die zwar zum Großteil nach unten in der Gasflasche absinken (warum man auch die Flaschen nicht Restentleeren sollte…), aber wohl die sehr empfindliche SecuMotion nach und nach verstopfte.

Truma SecuMotion

Truma SecuMotion


Truma empfehlt hier, wie auch bei anderen Gasreglern den Betrieb eines Filters.
Truma Gasfilter

Truma Gasfilter


Jetzt wurde es interessant, aber immerhin mit positiven Ausgang.
Truma bietet die “SecuMotion” nicht mehr an, aber der Händler hatte -GottseiDank- ein Exemplar des Nachfolgeproduktes “Truma DuoControl CS” für Horizontalmontage vorrätig.
Truma DuoControl CS

Truma DuoControl CS


Ein Kunde hatte vor zwei Wochen den Defekt seiner gemeldet, aber es hatte sich herausgestellt, dass er einfach nur eine von zwei Gasflaschen geleert hatte, ohne dass er es merkte (Fehlmessung dank eines defekten Gasflaschenfüllhöhenmessstiftes…).
Nun musste der Techniker eine 10mm Gasleitung auf 10cm Länge noch 90° umbiegen (Hut ab, der Mann kann was!) und ein neues Durchführungsloch bohren, da die Montagehöhe im Laufe der Zeit geändert wurde, um das Ganze einzubauen.
Wir fuhren in der Zwischenzeit mit Fahrrädern und U-Bahn zum CCH und konnte das nun beheizte Wohnmobil am späten Nachmittag wieder abholen.
Alles in Allem Glück im Unglück gehabt: Einen wirklich (verdammt!) guten und erfahrenen Fachmann gefunden (der, wie wir erfuhren, seine Werkstatt am Jahresende schließt und in den Ruhestand geht), der zwischen den Jahren geöffnet hat (nicht wie viele andere bis nächstes Jahr geschlossen), dann auch noch aus dummen Zufall ein passendes Ersatzteil vorrätig hatte und auch noch Zeit alles einzubauen etc. – Waren hier höhere Mächte im Spiel?! 🙂

Jetzt haben wir noch eine funktionsfähige “Truma DuoControl” für 30mbar, also einen Gasdruckregler für Standbetrieb (nicht Wohnmobil während der Fahrt; die getrennt angeflanschte SecuMotion ist ja hinüber) übrig, der automatisch auf die zweite Gasflasche umschaltet, wenn die erste leer ist. – Also nicht mehr nachts raus, wenn die Heizung mangels Gas ausgeht.

Truma DuoControl

Truma DuoControl


Anyone?

Liegerad HP Velotechnik Street Machine Gt zu verkaufen

HP Velotechnik Street Machine Gt

Update Sonntag, 07.06.2015: VERKAUFT!

Meine schöne Street Machine Gt ist verkauft. – Ich wünsche dem neuen Eigentümer viel Vergnügen mit dem Rad. – Dem glücklichen Grinsen im Gesicht beim Wegfahren zu urteilen hat er das!

Streep Machine Gt Vollansicht links

Ich biete meine Street Machine Gt Baujahr 2003 zum Verkauf an, da ich mir einen neuen Lieger bestellt habe. Die Nachbarn werden sich sicherlich auch freuen, wenn ich nicht zu viele Fahrräder im Keller stehen habe. 🙂

Ich habe das Rad als Reiserad in verschiedenen Urlauben genutzt, aber auch im “einfachen”  Alltag bin ich sehr zufrieden.
Street Machine Gt David Reise

Street Machine Gt David Reise 2

 

Das Rad ist unfallfrei. Im Laufe der Jahre hat es halt die “normalen” Gebrauchsspuren wie Kratzer von Taschenaufhängungen etc. bekommen. Es ist technisch aber 1a und super-zuverlässig.

  • Rahmen aus hochfestem Stahlrohr (25CrMo4) – Farbe Blau-Schwarz
  • Gefederte Hinterradeschwinge mit Stahlfederelement DV-22 600 lbs/inch für Fahrten auch voller Beladung (vier Taschen und Zeltrolle)
  • “No-Squat-Desigen”, damit die Kraft beim Treten auch am Berg im Vortrieb und nicht in der Federung landet
  • Hydraulisch gedämpfte Federgabel “Meks Carbon AC” vorn, 50mm Federweg
  • Schwalbe Marathon Plus Bereifung mit Pannenschutz (20 x 1.75 und 26 x 1.75)
  • Unten-Lenker 60cm breit für die gute Aussicht beim Fahren
  • Ergonomische Sitzschale Größe L, 10° in der Neigung verstellbar mit bequemer Ventisit Sitzauflage, 60cm Sitzhöhe
  • Gepäckträger
  • Lowrider aus 12mm Alu für zwei weitere Taschen/ max. 25kg
  • Hydraulische Scheibenbremsen “Magura Julie” hinten und vorn
  • Nabendynamo “SON” – Schmitz original Nabendynamo für 20″
  • Busch und Müller DiWa Beleuchtung mit Standlicht – Distance Warner läßt Rücklicht beim Verzögern aufleuchten, um Hinterherfahrende zu warnen
  • Shimano Deore 3×9 Schaltung mit Tiagra Umwerfer vorn und Lenkerendschaltern
  • Kombi-Pedale SPD-Klick + “Bärentatze” für Fahrten mit und ohne Rad-Schuhe
  • Das Rad ist derzeit auf ca. 1,82m Körperlänge eingestellt, kann aber angepasst werden

Probefahrten und Besichtigung vereinbare ich gerne. Das Rad steht im Raum Krefeld/ Moers/ Duisburg.

Streep Machine Gt Vollansicht rechtsSuM DiWaMagura Julie vornMagura Julie hinten

 

 

 

Zu letzt noch: Der Preis: 1.500€ VB

 

Bei Interesse schreibt mich an: d.huecking bei gmx.net

vnStat: Wieviel Netzwerkverkehr hatte welches Interface

Aus verschiedenen Gründen wollt ich monitoren, wieviel MB Traffic ich bei meinem Notebook so täglich über das UMTS Modem habe.

Gestolpert bin ich da über das Programm-Paket “vnstat”. Es läuft ein kleiner Daemon im Hintergrund und addiert defaultmäßig alle 5 Minuten den Traffic, der über die konfigurierten Interfaces ging und zeichnet diesen in einer Datenbank auf.

Abgefragt ist die Sache einfach mit “vnstat”:

$ vnstat

 rx / tx / total / estimated
 eth0: Not enough data available yet.
 wlan0:
 Dec '14 2.28 MiB / 610 KiB / 2.88 MiB / 0 KiB
 yesterday 2.28 MiB / 610 KiB / 2.88 MiB
 today 0 KiB / 0 KiB / 0 KiB / -- 

 virbr0: Not enough data available yet.
 wwan0:
 Dec '14 142.02 MiB / 89.06 MiB / 231.08 MiB / 2.62 GiB
 yesterday 0 KiB / 0 KiB / 0 KiB
 today 142.02 MiB / 89.06 MiB / 231.08 MiB / 343 MiB

Hier sind also alle Interfaces meines Notebooks aufgeführt, wobei mich eigentlich “wwan0”, wohinter sich das UMTS Modem verbirgt interessiert.

Installation unter Ubuntu 14.04 war auch recht einfach:

sudo apt-get install vnstat

Linux /tmp read-only nachträglich für Arme – ohne getrenntes Dateisystem

Temporär-Verzeichnisse wie /tmp oder /var/tmp auf Linux Rechnern read-only zu haben, kann einen vor den Folgen des einen oder anderen -meist automatischen- “Skriptkiddie” Angriffs schützen.

Im Rahmen einiger dieser Angriffe werden in einem für jedermann beschreibbaren Verzeichnis -also meist /tmp- ein Skript abgelegt, dass von dort ausgeführt wird, um weiteren Schaden zu verursachen.

Wenn dieses Verzeichnis nun mit der Option “noexec” gemounted ist, ist das Ausführen von Dateien dirkt aus dem Verzeichnis immerhin schwieriger. Unmöglich ist es jedoch nicht: Man könnte immer noch den notwendigen Befehlsinterpreter starten und das Skript als Parameter übergeben. Aber es geht hier einfach nur um eine weiter Hürde, die es für wenig Aufwand gibt und um automatische Angriffe, die ohne viel manuellen Zutun von nicht höchst fachlich fähigen Leuten ausgeführt werden.

Gut, ein Dateisystem kann man mit dem Parameter “-o noexec” mounten. – Was aber, wenn nun kein getrenntes Dateisystem für /tmp (und /var/tmp) bereit steht?

Hier lässt sich die Option “mount –bind” nutzen, um ein Verzeichnis in ein anderes zu mounten.

Vorbereitung. Kopien der Verzeichnisse /tmp und /var/tmp anfertigen. z.B. so:

cp -a /tmp /tmp-real
cp -a /var/temp /var/tmp-real

Dann lassen sich die “tmp-real” Verzeichnisse auf die “tmp” Verzeichnisse mounten:

mount -v --bind /tmp-real /tmp
mount -v -o remount,noexec,nosuid /tmp

Probe aufs Exempel:

$ ls -l /tmp
total 4
-rwxrwxr-x 1 testuser user 28 May 7 22:14 test.sh
$ cat /tmp/test.sh 
#! /bin/sh

echo Jaaaaaaaa

$ /tmp/test.sh
bash: /tmp/test.sh: Permission denied

Auch als root läßt es sich nicht ausführen:

~ # id
uid=0(root) gid=0(root) groups=0(root)
~ # /tmp/test.sh
-su: /tmp/test.sh: Permission denied

Jetzt noch alles zusammen: Ein Skript, um die Verzeichnisse read-only zu mounten:

~/bin # cat mount_tmp_noexec.sh
#!/bin/sh

echo noexec  to /tmp
mount -v --bind /tmp-real /tmp && mount -v -o remount,noexec,nosuid /tmp

echo
echo noexec to /var/tmp
mount -v --bind /var/tmp-real /var/tmp && mount -v -o remount,noexec,nosuid /var/tmp

echo 
echo Now mounted:
mount

…und eines das Ganze wieder rückgängig zu machen:

~/bin # cat mount_tmp_exec.sh 
#!/bin/sh

echo Umounting /tmp from noexec
# mount --bind /tmp-real /tmp && mount -o remount,exec,suid /tmp
umount /tmp

echo
echo Umounting /var/tmp from noexec
# mount --bind /var/tmp-real /var/tmp && mount -o remount,exec,suid /var/tmp
umount /var/tmp

echo 
echo Now mounted:
mount

Für das Einspielen von Paketen ist es zu empfehlen /tmp wieder read-write zu haben, da auch die Pakete vielfach Skripte zur Pre- oder Post-Installation dort ablegen und ausführen.

Beim Umounten kann es zu Problemen kommen, wenn Prozesse noch Dateien in dem Verzeichniss geöffnet lassen. Hier mit “lsof” o.ä. nachforschen.

MS Outlook like Reply in KMail

Mich störte die Art und Weise, wie KMail (4.x) Antworten auf eMails und damit die zitierte ursprüngliche eMail formatierte:

Am Sonntag 06 Januar 2013, 06:54:32 schrieben Sie:

Hallo David,

bla bla bla...


Lieber Gruß

Gerne hätte ich es so wie MS Outlook Antworten zitiert:

========= Original Message ========
From: John Doe 
Sent: Sonntag 06 Januar 2013 06:54
To: David HUECKING 
Cc: 
Subject: Gruss und Kuss 

Hallo David,

bla bla bla...


Lieber Gruß

===================================

Also flux in KMail im Menü “Einstellungen/ KMail einrichten…” unter “E-Mail-Editor” die Standard-Vorlagen für Antwort an Absender und Allen antworten/ der Liste antworten auf folgendes geändert:

%CURSOR

========= Original Message ========
From: %OFROMADDR
Sent: %ODATE %OTIME
To: %OCCADDR
Cc: %OCCADDR
Subject: %OFULLSUBJECT

%TEXT

===================================

Ubuntu 8.04 Upgrade mysql-server-5.0 Paket failed – Solved!

Letztens sollte das Paket mysql-server-5.0 auf einem Ubuntu 8.04 LTS ge-upgraded werden. Also das magische Doppel “apt-get update” und “apt-get upgrade” bemüht, aber/ und – Lest selbst:

Preparing to replace mysql-server-5.0 5.0.51a-3ubuntu5.8 (using .../mysql-server-5.0_5.0.96-0ubuntu3_i386.deb) ...
 * Stopping MySQL database server mysqld
   ...done.
Aborting downgrade from (at least) 5.1 to 5.0.
dpkg: error processing /var/cache/apt/archives/mysql-server-5.0_5.0.96-0ubuntu3_i386.deb (--unpack):
 subprocess pre-installation script returned error exit status 1
 * Stopping MySQL database server mysqld
   ...done.
 * Starting MySQL database server mysqld
   ...done.
 * Checking for corrupt, not cleanly closed and upgrade needing tables.
Errors were encountered while processing:
 /var/cache/apt/archives/mysql-server-5.0_5.0.96-0ubuntu3_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Also kurz gesagt: Upgrade schief gelaufen. Man musste sogar noch übrig gebliebene MySQL Geister-Prozesse abschießen…

Dann Tante Google und den Verstand bemüht. Ein Blog-Artikel:

http://senseq-techtips.blogspot.de/2009/03/mysql-51-downgrade-to-mysql-50-on.htm
 

schlägt vor, das gesamte Verzeichnis:

/var/lib/mysql

komplett zu löschen und dann das Upgrade durchzuführen. – War ich dann nicht ganz mit einverstanden so meine Datenbanken direkt mit zu entsorgen. Aber in den Kommentaren zum Artikel fand ich dann, was wirklich Sinn macht (und nebenbei auch funktioniert hat):

rm /var/lib/debian-5.1.flag

Dann Upagraden. Damit ist wohl der “Irrtum” aus dem Weg geräumt, dass hier ein MySQL Downgrade von 5.1 auf 5.0 gefahren werden soll.

Lokale Kopie des imap-Postfachs mit ssh-Tunnel, offlineimap und dovecot

Auch “offline” eMail lesen

…und zwar unabhängig vom verwendeten MUA (Mail User Agent) oder zu neu-deutsch Mailprogramm.

Verschiedene Mailprogramme bieten zwar oft die Möglichkeit eine offline Kopie es imap-Postfachs anzulegen, doch machen sie dies exklusiv für sich selbst, so dass man, wenn man den MUA wechselt oder mit mehrere parallel verwendet (z.B. KMail, alpine und Thunderbird) n Kopien auf seinem Laptop/ Netbook hat…

Da wollte ich Abhilfe schaffen. Genügen Resourcen für einen imap-Server hat mittlerweile jedes aktuelle Netbook: 1GB RAM, 120Gb Platte sind ja schon Minimum und es geht auch mit weniger. imap “spricht” jedes ernst zu nehmende Mailprogramm, so dass das wohl das optimale “Shared Medium” für eMails ist.

dovecot als lokaler imap-Server

Ich habe mich mit dovecot für einen modernen imap-Server entschieden. Er ist leicht zu konfigurieren und in jeder halbwegs aktuellen Linux-Distribution als Paket verfügbar.

Also dovecot-Paket(e) für dovecot-imap mittels distributionsspezifischem Tool (apt, zypper, yum…) installieren. Dann für den lokalen Gebrauch wie folgt minimal konfigurieren, indem man

/etc/dovecot/dovecot.conf

wie folgt modifiziert bzw. ergänzt:

protocols = imap
# oder wer auch an localhost mit SSL arbeiten möchte:
#protocols = imap imaps

listen = localhost
# ..oder auskommentieren, wenn man die gleichen Probleme wie ich mit KMail hat
# s.a. hier mein Blog-Artikel...
# With listen = localhost KMail can't access the imap-server...
#listen = localhost

disable_plaintext_auth = no

# Ich traue den localhost-Verbindungen ohne SSL
ssl=no

mail_location = maildir:~/Maildir

mail_privileged_group = mail

protocol imap {
}
protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
}
protocol managesieve {
}
auth default {
  mechanisms = plain
 passdb pam {
  }
  userdb passwd {
  }
  user = root
  !include_try /etc/dovecot/auth.d/*.auth
}
dict {
}
plugin {
}
!include_try /etc/dovecot/conf.d/*.conf

offlineimap konfigurieren

offlineimap synchronisiert entweder ein imap-Postfach eines Servers mit einem lokalen Maildir Store oder zwei imap-Postfächer, was wir hier machen wollen.

Lokal haben wir unseren dovecot und den Remote imap-Server binden wir gleich per SSH-Tunnel an. Also die

~/.offlineimaprc

wie folgt sinngemäß mit eigenen Login-Namen etc. erstellen bzw. ergänzen/ modifizieren:

[general]
metadata = ~/.offlineimap.IMAP
accounts = MyImap
maxsyncaccounts = 1
ignore-readonly = no
ui = Blinkenlights

[Account MyImap]
localrepository = LocalMyImap
remoterepository = RemoteMyImap
autorefresh = 60

[Repository LocalMyImap]
type = IMAP
remotehost = localhost
remoteport = 143
maxconnections = 5
remoteuser = mylocallogin
remotepass = SuperGeheim
holdconnectionopen = yes
keepalive = 60

[Repository RemoteMyImap]
type = IMAP
remotehost = localhost
remoteport = 10143
remoteuser = myremotelogin
remotepass = NochGeheimer
maxconnections = 5
holdconnectionopen = yes
keepalive = 60

So wird offlineimap alle 60 Minuten mit fünf Threads parallel die imap-Postfächer LocalMyImap und RemoteMyImap synchronisieren und dies über das Blinkenlights Interface schön darstellen.

ssh-Tunnel für imap

Jetzt muss noch der Remote imap-Server an Port 10143 von localhost verfügbar gemacht werden, wo offlineimap ihn erreichen möchte. – Selbstverständlich ist hier Voraussetzung, dass man Shell-Zugriff per SSH auf seinen imap-Server hat. Sonst muss mal die offlineimp-Konfiguration als Remote-Server auf einen externen Server umstellen (und dann natürlich SSL nicht vergessen)…

Ein einfaches

sudo ssh -f -N -L 10143:localhost:143 remoteuser@imap.remoteserver.tld

macht dies, indem es als User “remoteuser” auf den Server imap.remoteserver.tld verbindet (hier natürlich passenden User und Server einsetzen).

Ich hole mir hier auch noch gleich meinen SMTP-Server durch den SSH-Tunnel auf Port 10025 und nutze autossh (schönes Tool). Also:

sudo autossh -f -N -L 10143:localhost:143 remoteuser@imap.remoteserver.tld -L 10025:localhost:25 remoteuser@smtp.remoteserver.tld

..zwei Fliegen mit einer Klappe.

Ideen für Änderungen…

Ohne Tunnel

Eine mögliche Änderung habe ich oben schon erwähnt: Mit offlimeimap läßt sich natürlich auch mit einem entfernten imap-Server synchronisieren (wenn man z.B. keinen SSH-Tunnel hat oder haben möchte). Dazu einfach in

[Repository RemoteMyImap]

remotehost etc. passend ändern:

remotehost = localhost

und mit

ssl = yes

für Sicherheit sorgen.

…oder mit automatischem SSH-Tunnel

Oder man möchte einen SSH-Tunnel, den offlineimap selber aufbaut, weil man dies nicht “per Pfote” machen möchte. Hier gibt es folgende Optionen in der .offlineimaprc in der :

[Repository RemoteMyImap]

preauthtunnel = ssh -q imap.server.tld

# With on server side ~/.ssh/authorized_keys:
command="/usr/bin/imapd ~/Maildir" ssh-rsa xxxxxxxx(key)

Für Details verweise ich auf die Ergebnisse einer Suche bei der Lieblingssuchmaschine…

KMail/ Kontact mag nicht mehr starten

KMail bzw. KMail als Komponente von Kontact friert schon beim Starten ein

KMail bzw. KMail als Komponente von Kontact friert schon beim Starten ein: Genau das ist einem Freund letztens widerfahren.

Zuvor war KMail schon beim Verfassen einer eMail eingefroren und hat sich beendet bzw. musste beendet werden.

Weitermachen… auch wenn’s weh tut!

Scheinbar schien KMail dann beim erneuten Öffnen die Bearbeitung der “unverdaulichen” eMail fortzusetzen bzw. fortsetzen zu wollen. Damit frohr KMail natürlich wieder ein und und musste wieder beendet werden. :0)

Und täglich grüßt das Murmeltier.

Die Sache würde sich sicherlich weiter so fortsetzen, wenn man nicht manuell etwas unternähme. – z.B. die “unverdauliche” eMail wegräumte.

Weg mit dem Störenfried

Im Unterverzeichnis

.kde/share/apps/kmail/autosave/cur

bzw.

.kde4/share/apps/kmail/autosave/cur

bei openSUSE in des Users Home-Verzeichnis befinden sich die noch nicht fertig gestellten eMails.

In meinem Falle habe ich die dort liegende Datei von dort weg verschoben und konnte dann KMail wieder erfolgreich starten.

 

Zugriff verweigert oder wer hat meine Datei geöffnet: handle.exe zeigt offene Datei-Handles unter Windows

Zugriff verweigert/ Access denied beim Datei-Löschen

Letztens unter Windows 2003 Server: Da lässt sich eine Datei nicht löschen oder umbenennen. – Man bekommt immer nur ein “Zugriff verweigert” (oder in englisch “Access denied”). Nicht irgendwie noch eine Zusatzinformation, dass sie noch von einem anderen User oder Programm geöffnet ist. “Administrator” ist man ja selbstredend; daran liegt’s auch nicht.

Der “Eigenschaften”-Dialog im Windows Explorer zeigt auch nur die “Allgemein” Seite an, keine anderen Reiter sind da. cacls.exe bringt auch nur Zugriff verweigert. Seltsam.

Ein delete on reboot ist auch nicht drin, ist ja ein (Terminal-)Server. Spontaner Reboot ist eher mit Stress verbunden.

Unter Linux…

…wär das nicht passiert. Naja, bis auf die Tatsache, dass das File-Locking unter Windows und Linux völlig verschiedene Paar Schuh sind, ist unter Linux das Tool “lsof” (List Open Files) dabei. In dessen Ausgabe hätte ich schnell den schuldigen Prozess ausgemacht, der die Datei sperrt. Aber Windows bringt da leider meines Wissens nichts mit.

Da gibt’s ja noch (ex-)Sysinternals

Sysinternals.com – Die einzige Firma, die gerüchteweise mehr Knowhow über Windows hatte als Microsoft selber. Vor einiger Zeit hat MS die ja dann auch (deswegen?) geschluckt. – Wenn die jetzt noch Sernet kaufen, haben sie endlich den größten Teil des weltweiten Windows Knohows vereint. ;->

Mark Russinovich hat das schöne, kleine Tools handle.exe geschrieben, dass ganz einfach auf der Kommandozeile die File-Handles und Prozesse ausgibt, die eine Datei geöffnet haben:

C:\temp>c:\handle.exe wurst.jpg                                                                                                                
                                                                                                                                               
Handle v3.46                                                                                                                                   
Copyright (C) 1997-2011 Mark Russinovich                                                                                                       
Sysinternals - www.sysinternals.com                                                                                                            
                                                                                                                                               
gzip.exe           pid: 4711  type: File           698: C:\temp\wurst.jpg

Und weg…

Damit war der Schuldige gefunden: gzip.exe unter der PID 4711. – Kurz im Taskmanager den Prozess beendet und die böse Datei doch noch gelöscht.

for-Schleife in Kommandozeile/ cmd.exe in Windows über Liste von Ausgaben mit Hilfe von Backticks

Die Linux-Shell kann’s…

Wer kennt’s nicht? – Mal eben in der Linux-Shell die (Standard-)Ausgabe eines Kommandos zeilenweise über eine for-Schleife abarbeiten mittels der unauffälligen Backtick-Zeichen ‘`’, also dieser irgendwie “nach hinten” gekippten einfache Hochkommata?!

Also z.B. alle .JPG-Dateien in einem Verzeichnis in .jpg umbenennen (ja, danke FAT, dass Du keine Groß- und Kleinschreibung unterscheiden kannst…):

david@bree:~$ ll
insgesamt 2256
-rw-r--r-- 1 david users 151022 2010-12-24 15:20 1024_IMG_9239.JPG
-rw-r--r-- 1 david users 250506 2010-12-24 15:20 1024_IMG_9240.JPG
-rw-r--r-- 1 david users 318714 2010-12-24 15:20 1024_IMG_9241.JPG
-rw-r--r-- 1 david users 206009 2010-12-24 15:20 1024_IMG_9242.JPG
-rw-r--r-- 1 david users 266578 2010-12-24 15:20 1024_IMG_9243.JPG
-rw-r--r-- 1 david users 233510 2010-12-24 15:20 1024_IMG_9244.JPG
-rw-r--r-- 1 david users 248728 2010-12-24 15:20 1024_IMG_9245.JPG
-rw-r--r-- 1 david users 189831 2010-12-24 15:20 1024_IMG_9246.JPG
-rw-r--r-- 1 david users 211490 2010-12-24 15:20 1024_IMG_9247.JPG
-rw-r--r-- 1 david users 168863 2010-12-24 15:20 1024_IMG_9249.JPG
david@bree:~$ for f in `ls`; do mv $f `echo $f | sed 's/JPG$/jpg/g'`; done
david@bree:~$ ll
insgesamt 2256
-rw-r--r-- 1 david users 151022 2010-12-24 15:20 1024_IMG_9239.jpg
-rw-r--r-- 1 david users 250506 2010-12-24 15:20 1024_IMG_9240.jpg
-rw-r--r-- 1 david users 318714 2010-12-24 15:20 1024_IMG_9241.jpg
-rw-r--r-- 1 david users 206009 2010-12-24 15:20 1024_IMG_9242.jpg
-rw-r--r-- 1 david users 266578 2010-12-24 15:20 1024_IMG_9243.jpg
-rw-r--r-- 1 david users 233510 2010-12-24 15:20 1024_IMG_9244.jpg
-rw-r--r-- 1 david users 248728 2010-12-24 15:20 1024_IMG_9245.jpg
-rw-r--r-- 1 david users 189831 2010-12-24 15:20 1024_IMG_9246.jpg
-rw-r--r-- 1 david users 211490 2010-12-24 15:20 1024_IMG_9247.jpg
-rw-r--r-- 1 david users 168863 2010-12-24 15:20 1024_IMG_9249.jpg

Die for-Schleife loopt hier einfach mit der Variable f über die Ausgabe des ls-Kommandos und verwurstet nicht einfach den String “ls” als Eingabe. – Dank der ‘`’ Backticks, die das “ls” umschließen.
Ja, und richtig gesehen, auch im Umbenennen zum Ersetzen des Strings “JPG” durch “jpg” mit sed werden sie hier genutzt. Das aber nur nebenbei… Hier geht’s mit eigentlich nur um die for-Schleife über Ausgaben eines Kommandos.

Und jetzt auf DOS

Ok, DOS, also command.com kann es nicht, aber in der nativen Kommandozeile von Windows NT und Nachfahren, der cmd.exe gibt es eine ähnliche Möglichkeit:

for /F " usebackq delims==" %%f in (`dir /B *.JPG`) do (
 move %%f %%f.jpg
)

Und ja, ich weiß, dass a) zum Massen-Umbenennen wohl auch ein “move *.JPG *.jpg” in cmd.exe funktionieren sollte und b) mit obigem Kommando aus a.JPG ein a.JPG.jpg (und nicht a.jpg) würde. – Es geht mit aber nur um ein Beispiel… 🙂

Viel Spaß damit. Für mich war das schon öfter nützlich.