Verzeichnis-Icons abhängig vom Inhalt

Von Lonie

Wer kennt das nicht. Man hat eine unübersichtliche Struktur in welcher Unmengen an Verzeichnissen von welchen nur ein Teil Dateien enthält. Um nicht jedesmal, bei der Suche nach Dateien, eine Klickorgie zu starten habe ich mir mit einem Script beholfen welches in Abhängigkeit des Inhalts das Verzeichnissymbol ändert. Da mein wissen über cmd-Scripte nicht sonderlich ausgeprägt ist habe ich hierfür bash zur Hilfe genommen. Die benötigten Binaries sind am Ende des Beitrages als Download verfügbar.

Es existieren 2 Parameter zur Konfiguration

DIR => Hier hinterlegt ihr das Wurzelverzeichnis unter welchem die Icons angepasst werden sollen

DESKTOP => Dies ist der Pfad zu der desktop.ini welche genutzt werden soll. Diese könnt ihr erstellen indem ihr einem Verzeichnis ein Ordnersymbol vergebt und anschließend die unter dem Verzeichnis liegende desktop.ini kopiert.

clear.sh


DIR="C:\Folders"
DESKTOP="C:\Empty_Folders\Desktop\desktop.ini"
OLDIFS=$IFS
IFS=$'\012'

 
function hasDir() {
  local DIR="$1"
  local SUBDIRFILLED=0
  local DIRS=$(ls -1p "$DIR"|grep /|wc -l);
    if [ $DIRS -gt 0 ]
    then
      # There are directories in Path, recall function for each directory
      for SUBDIR in $(./find.exe "$DIR" -maxdepth 1 -mindepth 1 -type d); do
        local STATUS=$(hasDir "$SUBDIR")
        if [ $STATUS -gt 0 ]
        then
          SUBDIRFILLED=$(($SUBDIRFILLED + 1))
        fi
      done
  fi
  local FILES=$(ls -1p "$DIR"|grep -v /|wc -l);
  if [ $FILES -gt 0 ]
  then
    SUBDIRFILLED=$(($SUBDIRFILLED + 1))
  fi

  if [ $SUBDIRFILLED -eq 0 ]
  then
    cp "$DESKTOP" "$DIR/desktop.ini"
    attrib +s +h +a "$DIR/desktop.ini"
    attrib +r "$DIR"
    echo 0
  else 
    echo 1
  fi

}
./find.exe $DIR -type f -name "desktop.ini" -exec rm -f {} \;
hasDir $DIR




IFS=$OLDIFS
[Gesamt:2    Durchschnitt: 5/5]