working on it ...

Filters

snippets
26
followers
4
Published by maholtz

maholtz

Meine Schnippsel:)
Sort by

Found 26 snippets

    public by maholtz modified Feb 15, 2017  1170  0  5  0

    Wert einer Zelle relativ zur aktuellen Zelle

    Mit der folgenden Formel kann in Google Tabellen ein Wert aus einer anderen Zelle verwendet werden, die um X-Zeilen und Y-Spalten von der aktuellen Zelle versetzt sind.
    // ROW() Gibt die aktuelle Zeile zurück
    // COLUMN() die aktuelle Spalte zurück, allerdings als Zahl, nicht als Buchstaben
    //
    // Der Wert der gewünschten Zelle, die also eine bestimmte Anzahl
    // an Zeilen und Spalten versetzt ist, kann entsprechend mit 
    // ROW()-2 und COLUMN()-4 gewählt werden
    // 
    // via concatenate wird ein Sting in der Form "R41C4" erzeugt,
    // die Schreibweise kann dann an die Funktion indirect übergeben 
    // werden (Parameter FALSE!) und gibt dann den Wert aus.
    //
    // Der Wert kann dann weiter verarbeitet werden.
    indirect(concatenate("R";ROW()-2;"C";COLUMN()-4);FALSE)

    public by maholtz modified Feb 9, 2017  1729  0  5  0

    Bestimmte Zeile im CSV finden

    Für Notepad++ - Zeilen mit bestimmten Inhalt in CSV Suchen bzw. Zeile löschen (Ersetzen durch nichts)
    // Für Notepad++
    // Regulärer Ausdruck um in einer CSV-Datei eine Zeile mit dem Wert 'abcd' zu finden
    // Spalte ist dabei egal, Zeilenende mit Windows-Umbruch \r\n
    
    // Reguläre Ausdrücke aktivieren und [x] findet \r und \n aktivieren
    ^[^\r]*'abcd';[^\r]*\r\n

    public by maholtz modified Aug 17, 2016  1390  1  4  0

    Windows Batch - for loop

    REM use %%x in Batch file, %x on console
    REM for /l %%x in (START, STEP, END) do (
    for /l %%x in (101, 1, 199) do (
      REM %%x - a longer variable is not allowed?
    	echo Number %%x
    )
    

    public by maholtz modified Mar 8, 2016  3305  2  5  0

    notepad++ regulären Ausdruck ersetzen

    Bei diesem Beispiel werden alle XML-Attribute ersetzt, die nicht die attribute-id "myexample" haben und dort wird um den Wert noch das
    
    # Befehl zum Suchen
    # (?!myexample) Bedeutet, hier darf nicht "myexample" stehen
    # ([^"]*) bedeutet, suche den Text bis zum schließenden ". Durch die runde Klammer steht der Inhalt in $1 zur Verfügung
    # ([^<]*) bedeutet, dass der Text bis zum ersten "<"-Zeichen gefudnen wird. Der Text ist die zweite runde Klammer mit Inhalt und kann über $2 abgefragt werden.
    <custom-attribute attribute-id="(?!myexample)([^"]*)">([^<]*)</custom-attribute>
    
    # Befehl zum ersetzen
    <custom-attribute attribute-id="$1"><value>$2</value></custom-attribute>     

    public by maholtz modified Jan 20, 2016  2297  8  6  0

    Regex Suche in Notepad++

    Dieser Befehl sucht Einträge im Tag, die nicht in der Liste in der runden Klammer existieren.
    # Findet alle Tags, in denen weder "standard" noch "reduced" noch "none" vorkommt.
    #?! <- bedeutet "nicht"
    # die "|" bedeutet oder
    <tax-class-id>(?!standard|reduced|none).*<\/tax-class-id>

    public by maholtz modified Dec 26, 2015  2678  8  6  1

    read files from dirty ntfs filesystem

    i made an ddrescue image from an harddrive. chkdsk on windows didnt worked anymore, because the harddrive had some errors. I was not able to repair the filesystem, so after mounting the image i got just errors. But i was able to retrieve informations via ntfsinfo. So i wrote this skript. Perhaps it is just a waste of time and probably there w
    #!/bin/bash
    # If you have an image, set up an loop-back device first.
    # sudo losetup --show  -P /dev/loop4  backup.img
    
    # check if inode is a file or directory 
    # (be aware, there are some special files etc...)
    # @var ifFile #NUMBER#
    ifFile()
    {
        INODE="$1"
        # as far as i understood, DATA (0x80) exists only with files
        ISFILE=`sudo ntfsinfo -i "$INODE" -f /dev/loop4 | grep -E  "DATA \(0x80\)"`
        
        if [ "$ISFILE" ] ; then
            # echo "$1 is file"
            echo 1
            return 1
        else
            # echo "$1 is not file"
            echo 0
            return 0
        fi
        
    }
    
    # read name from inode
    # @var nameAusInodeLesen #NUMBER#
    nameAusInodeLesen()
    {
        INODE=`sudo ntfsinfo -i "$1" -f  /dev/loop4 | grep -E "Filename:"`
        # there is a record with MSDOS (8.3 charachters) and with
        # long ntfs filenames
        # assumption, ntfs filenames does not have an "~" in it,
        # but if filename is longer than in msdos possible,
        # it will have an ~ in msdos
        FILENAME=`echo $INODE | grep -E -o "Filename: '([^'~]*)'" | grep -E -o "'([^']*)" | grep -E -o -m 1 "([^']*)"`
        echo "$FILENAME"
    }
    
    # read parent (directory) from inode
    # @var parentAusInodeLesen #NUMBER#
    parentAusInodeLesen()
    {
        INODE=`sudo ntfsinfo -i "$1" -f  /dev/loop4`
        #PARENT=`echo $INODE | grep -m 1 -E -o "([0-9])*"`
        PARENTDIRECTORY=`echo $INODE | grep -E -o "Parent directory: ([0-9]*) " | grep -E -o -m 1 "([0-9]*)"`
        echo "$PARENTDIRECTORY"
    }
    
    # creates a file with all
    # inodes and their parent directory
    createLookUpFile()
    {
        a=0; 
        echo "start\n" > allInodes.log;
        # check by hand via ntfsinfo -i #YOURNUMBER' -f /dev/loop4
        # to determine the number of possible inodes!
        while [ "$a" -lt 300000 ]; do 
        echo -n "$a" >> allInodes.log; 
        echo -n "|" >> allInodes.log;
        echo $(parentAusInodeLesen $a) >> allInodes.log;
        a=`expr $a + 1`;
        done;
    }
    
    
    # rekursiv(inode)
    #  finde alle wo parent == inode
    #        für jeden Treffer:
    #            wenn inode verzeichnis
    #                erzeuge verzeichnis
    #                redkursiv (verzeichnis inode)
    #            sonst
    #                kopiere Datei via Cat
    
    # now, read recursiv all inodes, create directorys and
    # copy files
    # @var #number# #relative directory#
    processFolder()
    {
        # starting with the starting folder inode
        INODE="$1"
        # starting with an existing backup directory!
        VERZEICHNIS="$2"
        # read all inodes from allInodes.log
        grep -E "^([0-9]*)\|$INODE$" allInodes.log | grep -o -E "^[0-9]*" | while read -r line ; do
            NAME="$(nameAusInodeLesen $line)"
            echo "Processing $line => $NAME ($VERZEICHNIS)"
            # if it is a file, copy the file
            # via ntfscat to the backup folder
            if [ $(ifFile $line) = "1" ]; then        
                sudo ntfscat /dev/loop4 -f -i $line > $VERZEICHNIS/$NAME
            else
                # create directory!
                echo "create directory: $NAME"
                NEWDIR=$VERZEICHNIS'/'$NAME
                mkdir "$NEWDIR"
                # backup lokal directory, otherwise $VERZEICHNIS 
                # will be overwritten by the recursiv call
                LOKALDIR="$VERZEICHNIS"
                # but we do not process the root folder "."
                # because that folder points to itself
                if [ $NAME = "." ]; then
                    echo "Den Ordner '.' nicht :)"
                else
                    processFolder $line "$NEWDIR"
                fi
                # restore directory
                VERZEICHNIS="$LOKALDIR"
                
            fi
        done    
    }
    # processFolder 688 ./Backup/SomeFolder
    
    # i do not know, it "5" is allways the root folder (".")
    processFolder 5 ./Backup/Komplett
    

    public by maholtz modified Dec 21, 2015  2144  0  6  0

    loopback device

    create loopback device for partition in disk image
     
    sudo losetup --show  -P /dev/loop4  image_sdc3.img
    

    public by maholtz modified Dec 21, 2015  2126  1  6  0

    Read inodes from ntfs

    All inodes from an NTFS Filesystem are logged into an file. For each inode filename and parent inode (directory) is saved.
    # i used it as one line in bash, added newlines here for better readability
    a=0; 
    echo "start\n" > mh.log; 
    while [ "$a" -lt 300000 ]; do 
      echo -n "$a" >> mh.log; 
      sudo ntfsinfo -i "$a" -f /dev/loop4 | grep -E "Filename:|Parent" >> mh.log; 
      echo "\n" >> mh.log; 
      a=`expr $a + 1`;
    done;
    

    public by maholtz modified Oct 20, 2015  2545  1  6  0

    while loop batch

    # In einer Zeile, zählt hoch und wartet dazwischen 10 Sekunden
    # Kann als Basis genommen werden um auf die Schnelle Befehle
    # mit Pause in der Shell zu wiederholen
    a=0; while [ "$a" -lt 100 ]; do echo -n "$a"; sleep 10;  a=`expr $a + 1`; done;

    public by maholtz modified Jul 27, 2015  2073  0  6  0

    Auf Existenz einer Datei in einem Verzeichnis prüfen

    Ganz einfache Funktion für Windows Batch Dateien zur Überprüfung von Verzeichnissen auf die Existenz von bestimmten Dateien in bestimmten Größen.
    REM Aufruf:
    CALL :checkForFile "\\server\pfad\" "Datei*.xml" 1000 2000 "Gesucht wird Datei*.xml"
    
    
    
    :checkForFile
    set verzeichnis=%1
    set zieldateien=%2
    set minDateigroesse=%3
    set maxDateigroesse=%4
    set BETREFF=%5
    
    REM echo Check for %zieldateien% in %verzeichnis% von heute
    echo. 
    echo ! ------------------------------------------
    echo ! %BETREFF%
    
    set DATEI=""
    for /R %verzeichnis% %%f in (%zieldateien%) do (
    	set DATEI=%%f
    	REM echo %%f mit %%~zf
    	if %%~zf LSS %minDateigroesse% (
    		echo FEHLER: Datei %%f ist mit %%~zf Bytes zu klein!
    		SET /a FEHLER=%FEHLER%+1
    		exit /B -1
    	)	
    	if %%~zf GTR %maxDateigroesse% (
    		echo FEHLER: Datei %%f ist mit %%~zf Bytes zu gross!
    		SET /a FEHLER=%FEHLER%+1
    		exit /B -2
    	)
    )
    if %DATEI%=="" (
    	echo FEHLER: Datei fehlt!
    	echo %zieldateien% in %verzeichnis%
    	SET /a FEHLER=%FEHLER%+1
    	exit /B -3
    )
    echo ! OK: %DATEI%
    exit /B 0    
    • Public Snippets
    • Channels Snippets