Dateiname direkt Batch-Datei übergeben
Jens87
- programmiertechnik
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
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
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
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