Jens87: Dateiname direkt Batch-Datei übergeben

Hallo liebe Forumgemeinde,

ich habe kürzlich eine Batch-Datei geschrieben, welche mir von vorhandenen .dat-Files jeweils die letzten 4 Zeilen löscht. Das Skript dazu sieht folgendermaßen aus:

  
@echo off & setlocal  
set "Datei=file01.dat"  
set "Entf=4"  
set "Bak=bak"  
  
set Anzahl=0  
for /f "delims=:" %%i in ('findstr /n "^" "%Datei%"') do set Anzahl=%%i  
set /a Bis=%Anzahl%-%Entf%  
  
if %Bis% leq 0 (  
    echo Die Datei "%Datei%" enthaelt zu wenig Zeilen!  
    goto :eof  
)  
  
move "%Datei%" "%Datei%.%Bak%"  
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Datei%.%Bak%"') do if %%i leq %Bis% (>>"%Datei%" echo\%%j)  

Dieses funktioniert auch sehr gut. Nun würde ich es gerne etwas "dynamischer" gestalten. Allerdings muss ich später die Batch datei aus einem anderen Programm heraus über die Konsole aufrufen. - Ist es möglich hierbei den Dateinamen "file01.dat" direkt mitzuübergeben, sodass das Skript etwa in der Form von

c:\users\jens\desktop\program>deleterows.bat file01.dat

aufgerufen werden kann?

Ich hoffe, es kann mir jemand weiterhelfen.
Besten Dank im Voraus,
  jens

  1. Hallo liebe Forumgemeinde,

    ich habe kürzlich eine Batch-Datei geschrieben, welche mir von vorhandenen .dat-Files jeweils die letzten 4 Zeilen löscht. Das Skript dazu sieht folgendermaßen aus:

    @echo off & setlocal
    set "Datei=file01.dat"
    set "Entf=4"
    set "Bak=bak"

    set Anzahl=0
    for /f "delims=:" %%i in ('findstr /n "^" "%Datei%"') do set Anzahl=%%i
    set /a Bis=%Anzahl%-%Entf%

    if %Bis% leq 0 (
        echo Die Datei "%Datei%" enthaelt zu wenig Zeilen!
        goto :eof
    )

    move "%Datei%" "%Datei%.%Bak%"
    for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Datei%.%Bak%"') do if %%i leq %Bis% (>>"%Datei%" echo%%j)

    
    >   
    > Dieses funktioniert auch sehr gut. Nun würde ich es gerne etwas "dynamischer" gestalten. Allerdings muss ich später die Batch datei aus einem anderen Programm heraus über die Konsole aufrufen. - Ist es möglich hierbei den Dateinamen "file01.dat" direkt mitzuübergeben, sodass das Skript etwa in der Form von  
    >   
    > c:\users\jens\desktop\program>deleterows.bat file01.dat  
    >   
    > aufgerufen werden kann?  
    >   
    > Ich hoffe, es kann mir jemand weiterhelfen.  
    > Besten Dank im Voraus,  
    >   jens  
      
    bzw. eigentlich wäre es gut, wenn ich gleichzeitig noch die Anzahl der zu löschenden Zeilen übergeben kann, sodass das Skript so aufgerufen werden kann:  
      
    c:\users\jens\desktop\program>deleterows.bat file01.dat 4  
      
    Lieben Gruß,  
      jens
    
  2. Hallo,

    [...] Allerdings muss ich später die Batch datei aus einem anderen Programm heraus über die Konsole aufrufen. - Ist es möglich hierbei den Dateinamen "file01.dat" direkt mitzuübergeben, sodass das Skript etwa in der Form von

    c:\users\jens\desktop\program>deleterows.bat file01.dat

    aufgerufen werden kann?

    selbstverständlich. Die übergebenen Kommandozeilen-Parameter können als %1, %2, %3, ... innerhalb der Batchdatei verwendet werden, %0 enthält den Namen der Batchdatei selbst (AFAIR mit komplettem Verzeichnispfad), falls man den mal brauchen sollte.

    Ciao,
     Martin

    --
    Disziplin: Teppichböden wiederfinden, wenn man sie verlegt hat.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hallo,

      [...] Allerdings muss ich später die Batch datei aus einem anderen Programm heraus über die Konsole aufrufen. - Ist es möglich hierbei den Dateinamen "file01.dat" direkt mitzuübergeben, sodass das Skript etwa in der Form von

      c:\users\jens\desktop\program>deleterows.bat file01.dat

      aufgerufen werden kann?

      selbstverständlich. Die übergebenen Kommandozeilen-Parameter können als %1, %2, %3, ... innerhalb der Batchdatei verwendet werden, %0 enthält den Namen der Batchdatei selbst (AFAIR mit komplettem Verzeichnispfad), falls man den mal brauchen sollte.

      Ciao,
      Martin

      Besten Dank!
      Das hat mir sehr geholfen - es funktioniert wunderbar!

      Liebe Grüße
       jens