Я попытался по-вашему, написав:
findstr /v TRAILER %SFTP_INDIR%\Location*.txt > %IN_DIR%\loc.txt
Здесь %SFTP_INDIR% = D:\Batch\Batch_FWK\SFTP\inbox.
Выходной файл loc.txt не содержит последнюю запись TRAILER|5|
сейчас, но он напечатал каждую запись, как это в выходном файле:
D:\Batch\Batch_FWK\SFTP\inbox\Location.20150528060210.txt:1220|6963|TRUCK|5760|
Ответ Ромео Нинов
findstr /v TRAILER filename >newfilename
работает так, как хотелось бы только при удалении последней строки из одного файла.
Это потому что:
Если выполняется поиск более одного файла, к результатам будет добавлен префикс с именем файла, в котором был найден текст. Имя файла не печатается, если запрос был явно для одного файла, или при поиске вводимых по трубопроводу вводов или перенаправленных вводов.
Чтобы обойти это ограничение, вы можете использовать команду for
для обработки нескольких отдельных файлов и вывода результатов в один файл.
Попробуйте следующую команду в командном файле:
for /f "tokens=*" %%a in ('dir /b "%SFTP_INDIR%\Location*.txt"') do findstr /v TRAILER %%a >> %IN_DIR%\loc.txt
При запуске из командной строки замените %%
на %
.
Источник findstr