У меня есть этот пакетный файл ниже, который является простой эмуляцией команды head
Unix - он будет читать первые строки COUNT из входного файла .csv (названного параметром командной строки). Однако, в отличие от команды Unix, она записывает в жестко закодированный выходной файл. Единственная проблема сейчас заключается в том, что этот пакетный файл будет вызываться несколько раз для создания этого выходного файла и будет продолжать добавлять результаты в выходной файл. Я не могу изменить >>
на >
так как это цикл for
и он будет просто перезаписывать одну строку в моем выходном файле, что неверно. У кого-нибудь есть идеи о том, как перезаписывать выходной файл .csv при каждом запуске пакетного файла?
@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