batch-file - 如何在错误日志文件中重定向成功命令的输出?
问题描述
我有一个批处理文件,可以将一些文件从不同的网络共享驱动器复制到我自己的计算机上。
如果在任何时候发生任何错误,我已经设置了一个用于记录的日志文件,但无法在发生错误的错误日志中指定特定驱动器的名称。
我的批处理代码:
@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 中执行此操作。所有其他网络连接的 PC 也是 Windows 10。
解决方案
最简单的解决方案是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
并改为附加。
推荐阅读
- c# - VS Extension VSIX 保存所有未保存的文档
- algorithm - 关于合并两个排序列表的问题(leetcode 问题 21)
- google-apps-script - 使用 Google 表格控制 Google 日历
- python - 我在 Windows 10 系统上最近安装的 python+otree 组合上使用“git push heroku master”时遇到了一些困难
- java - Thymeleaf 中的动态 HTML
- javascript - 无论用户输入是什么,对用户输入生成随机答案的游戏都会生成相同的答案
- javascript - 图像轮播
- actionscript-3 - AS3:如何严格测试实例是否为对象类型?
- python - 尽管使用了正确的路径,但 Lambda 的层没有导入外部库
- c# - AuthorizationPolicy 基于 url 中的共享密钥,无需身份验证或身份