Во-первых, написать программу TEE.BAT относительно легко. Единственная проблема состоит в том, что команда set /p
(используется для получения выходных данных команды) не различает конец файла и пустую строку. Это означает, что выходные данные будут записаны до первой пустой строки (или до конца файла):
@echo off
:: usage: AnyCommand | TEE filename
setlocal EnableDelayedExpansion
if exist %1 del %1
:nextLine
set line=:EOF
set /p line=
if "!line!" == ":EOF" goto :eof
echo(!line!
echo(!line!>> %1
goto nextLine
Вы можете проверить, что этот пакетный файл действительно работает следующим образом:
tee CopyOfFile.txt < File.txt
Однако , если этот пакетный файл используется так, как он был спроектирован, то время от времени происходит сбой:
type File.txt | tee CopyOfFile.txt
Предыдущая строка иногда работает нормально, а иногда показывает и хранит только первую строку файла. Я сделал несколько тестов и не могу выделить причину ошибки. Возможно, кто-то (Джеб?) Сможет объяснить, что происходит в этом случае, и дать решение.