1. Dashboard
  2. Articles
  3. Members
    1. Recent Activities
    2. Users Online
    3. Team
    4. Search Members
  4. Forum
  • Login
  • Register
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • More Options
  1. www.cls-forum.de
  2. Hauptforum
  3. Kaminzimmer

Bitte um Hilfe, ist mal ganz OT

  • gsx1100g
  • January 11, 2011 at 1:08 PM
  • gsx1100g
    Intermediate
    Reactions Received
    8
    Posts
    453
    • January 11, 2011 at 1:08 PM
    • #1

    Hallo,

    habe hier ein Script von LINUX und m?chte das in ein DOS Batch File konvertieren.
    Kann mir da jemand helfen??

    #!/bin/bash

    FILELIST=`ls *.txt`

    OUTF=outfile.dat

    #
    # Ausgabezuruecksetzen
    if [ -f $OUTF ]; then
    echo "Datei [$OUTF] existierte schon , Datei wurde ?berschrieben"
    exit 1
    fi

    rm -f $OUTF

    for ii in $FILELIST; do
    echo "Process [$ii]"
    cat $ii | awk -f filter.awk >> $OUTF (Den Filter gibt es unter DOS auch, und heisst GAWK, nur zur info)
    done


    Danke

    gsx1100g

    ------------------------------------------------------------------------------------------------------------------------------
    VW Tiguan 2021

    CLS 350 CGI BJ 2007
    KTM 1290 Super Adventure R BJ 2017
    Yamaha TT600s BJ 1996

  • RaPo
    Intermediate
    Posts
    305
    • January 11, 2011 at 5:58 PM
    • #2

    Hallo gsx1100g,
    mein Vorschlag:

    @echo off
    set filelist=*.txt
    set outf=outfile.dat
    if not exist %outf% goto weiter
    echo Datei %outf% existierte schon, Datei wurde ueberschrieben
    del %outf%
    :weiter
    for %%i in (%filelist%) do type %%i|gawk -f filter.awk >>%outf%

    Ich muss aber zugeben, dass ich den "awk f?r DOS" nicht kenne, vermute aber, dass er wie der LINUX-awk funktioniert, also "pipelining" unterst?tzt.
    Desweiteren:
    In der For-Schleife kann meines Wissen nur EIN Befehl angegeben werden.
    Wenn Du also auf die (informative) Ausgabe von "Process <filename>" bestehst, musst Du eine weitere Batchdatei erzeugen (k?nnte man nat?rlich auch durch die aufrufende Batch-Datei automatisch erzeugen), die Du in der For-Schleife entspr. aufrufst:
    ....
    for %%i in (%filelist%) do aufruf.bat %%i %outf%

    Inhalt der Datei aufruf.bat
    @echo off
    echo Process %1
    type %1|gawk -f filter.awk >>%2

    Edit - Nachtrag:
    Ich habe mich durch den Text und Kommentar etwas verleiten lassen, nicht genau hinzusehen ;)
    Durch den Befehl "exit 1" wird ja die Verarbeitung abgebrochen, wenn die Ausgabedatei bereits vorhanden ist, d.h. es wird Nichts ?berschrieben!
    Aber was soll dann der rm-Befehl ?(
    Wenn es aber so sein soll dann:

    @echo off
    set filelist=*.txt
    set outf=outfile.dat
    if not exist %outf% goto weiter
    echo Datei %outf% existiert schon, Datei wurde nicht ueberschrieben
    goto ende
    :weiter
    for %%i in (%filelist%) do type %%i|gawk -f filter.awk >>%outf%
    :ende

    Man k?nnte auch "exit 1" statt "goto ende" verwenden, aber dadurch wird die aktuelle Kommando-Shell beendet.

    Mercedes Benz - Endlich zuhause!

    Edited 4 times, last by RaPo (January 12, 2011 at 7:05 AM).

  • gsx1100g
    Intermediate
    Reactions Received
    8
    Posts
    453
    • January 12, 2011 at 7:26 AM
    • #3

    Hallo RaPo,

    vielen vielen herzlichen Dank!!!!

    es funktioniert wie ich will, super!


    Kann nicht oft genug Danke sagen

    Gru? gsx1100g

    PS: Einfach ein TOP Forum mit Top Leuten!!

    ------------------------------------------------------------------------------------------------------------------------------
    VW Tiguan 2021

    CLS 350 CGI BJ 2007
    KTM 1290 Super Adventure R BJ 2017
    Yamaha TT600s BJ 1996

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!

Register Yourself Login
  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™