Как перенаправить вывод успешной команды в файл журнала ошибок? - PullRequest
0 голосов
/ 14 мая 2019

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

Я установил файл журнала для записи, если в какой-либо момент происходит ошибка, но я не могу указатьимя конкретного диска в этом журнале ошибок, для которого произошла ошибка.

Мой пакетный код:

@ECHO OFF
set LOGFILE=Backup.log
call :L 2>> %LOGFILE%
EXIT /B

:LOG
***echo --------Drive "c03f"--------- >> Backup.log*** --to print network drive's name in the log file. Please ignore the star mark and the double quotes--
net use p: \\10.210.162.171\Packages && copy p:\run.log d:\Files
:LOG
echo --------Drive "c04f"--------- >> Backup.log
net use p: \\10.210.162.192\Packages && copy p:\run.log d:\Files
:LOG
echo --------Drive "c05f"--------- >> Backup.log
net use p: \\10.210.162.196\Packages && copy p:\run.log d:\Files

Ожидаемый результат в файле журнала ошибок:

--------Drive c03f---------
network name not valid
Cannot connect to the system.
--------Drive c04f---------
network name not valid
Cannot connect to the system.
--------Drive c05f---------
1 File(s) copied

Текущий результат в файле журнала ошибок: -

network name not valid
Cannot connect to the system.
network name not valid
Cannot connect to the system.
1 File(s) copied

Это то, что я делаю, и после `: LOG.

Это не дает имя общего сетевого диска, как яхочу.Поскольку имеется всего три диска и для каждого из них одинаковый набор команд, я не могу определить, для какого сетевого диска общего пользования произошла эта ошибка.

Всего три одинаковых оператора с разными дискамиимена и разные IP.Я делаю это в Windows 10. Все остальные компьютеры, подключенные к сети, также Windows 10.

1 Ответ

0 голосов
/ 15 мая 2019

Самое простое решение было бы call :log >>%logfile% 2>&1 для записи STDOUT и STDERR в файл журнала.Но, похоже, вы не хотите регистрироваться STDOUT.Таким образом, вы можете перенаправить ваши echo команды на STDERR в подпрограмме:

@ECHO OFF
set LOGFILE=Backup.log
call :L 2>> %LOGFILE%
EXIT /B

:LOG
echo --------Drive "c03f"--------- 1>&2
net use p: \\10.210.162.171\Packages && type p:\run.log >> d:\Files\run.log 
echo --------Drive "c04f"--------- 1>&2
net use p: \\10.210.162.192\Packages && type p:\run.log >> d:\Files\run.log
echo --------Drive "c05f"---------1>&2
net use p: \\10.210.162.196\Packages && type p:\run.log >> d:\Files\run.log

Я изменил ваши copy команды на type, чтобы избежать перезаписи run.log и добавить вместо этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...