Mam poniżej ten plik wsadowy, który jest prostą emulacją headpolecenia Unixa - odczyta pierwsze COUNT wiersze z wejściowego pliku .csv (nazwanego jako parametr wiersza polecenia). Jednak w przeciwieństwie do polecenia Unix, zapisuje do zakodowanego pliku wyjściowego. Jedynym problemem jest teraz to, że ten plik wsadowy zostanie kilkakrotnie wywołany w celu utworzenia tego pliku wyjściowego i będzie nadal dołączał wyniki do pliku wyjściowego. Nie mogę zmienić >>się >, ponieważ jest to forpętla i po prostu zachować zastąpieniem jednej linii do mojego pliku wyjściowego, który jest nieprawidłowy. Czy ktoś ma jakieś pomysły, jak zastąpić wyjściowy plik .csv przy każdym uruchomieniu pliku wsadowego?
@echo off
if [%1] == [] goto usage
if [%2] == [] goto usage
call :print_head %1 %2
goto :eof
REM
REM print_head
REM Prints the first non-blank %1 lines in the file %2.
REM
:print_head
setlocal EnableDelayedExpansion
set /a counter=0
for /f ^"usebackq^ eol^=^
^ delims^=^" %%a in (%2) do (
if "!counter!"=="%1" goto :eof
@echo>>trimmed.csv %%a
set /a counter+=1
)
goto :eof
:usage
echo Usage: head.bat COUNT FILENAME