Пакетное перенаправление вывода stderr в файл и стандартный вывод по каналу в файл

#windows #logging #batch-file #redirect

#Windows #ведение журнала #пакетный файл #перенаправление

Вопрос:

У меня есть скрипт резервного копирования, который вызывает SVN dump, выводит stderr в файл, а затем передает вывод в 7zip.

Теперь мне нужно перенести эту систему на Windows, используя пакетный файл, но, похоже, я не могу получить доступ к файлу дважды в одной строке, как мне позволит linux, есть ли альтернативный синтаксис?

 svnadmin dump D:Repoexample 2>> %logfile% | 7za a new.7z >> %logfile%
  

(выше приведен только пример)

В Windows, если я пытаюсь это сделать, я получаю сообщение об ошибке, что к файлу уже осуществляется доступ. Как я могу убедиться, что получаю ошибку как от svnadmin, так и от 7za в мой файл журнала?

Ответ №1:

Вы также можете использовать блок для перенаправления обоих непосредственно в файл журнала.

Перенаправление стандартного вывода с помощью 1>>amp;2 на stderr, а затем объединение обоих с помощью круглой скобки и перенаправление его одним 2>> в файл журнала.

 (svnadmin dump D:Repoexample | 7za a new.7z 1>>amp;2 ) 2>> %logfile%
  

Ответ №2:

Это помогает мне:

 ( svnadmin dump D:Repoexample 2>> %logfile% | 7za a new.7z >> %logfile%.tmp ) amp; copy %logfile% %logfile%.tmp