Я хочу удалить последнюю строку из текстового файла, используя пакетный скрипт Windows. последняя строка всегда будет как «ТРЕЙЛЕР |». Как я могу этого достичь. Мой файл .txt выглядит так:

1220 | 6963 | TRUCK | 5760 |

1221 | 6964 | TRUCK | 1440 |

1220 | 6965 | TRUCK | 2880 |

1221 | 6966 | TRUCK | 2880 |

1221 | 6967 | TRUCK | 2880 |

ПРИЦЕП | 5 |

1 ответ1

0

Я попытался по-вашему, написав:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .