Windows 批处理文件将输出重定向到带有日期/时间的日志文件

标签 windows date batch-file logging cmd

我正在尝试运行一个运行可执行文件并将其输出重定向到日志文件的批处理文件。日志文件必须将日期和时间作为文件名。这是我正在使用的命令:

"%PROGRAMFILES%\PostgreSQL\9.4\bin\vacuumdb.exe" --username postgres --verbose --analyze --all > E:\Logs\VacuumDB\%date:~10,4%_%date:~4,2%_%date:~7,2%_%time:~0,2%_%time:~3,2%_%time:~6,2%.log 2>&1

此命令在直接粘贴到 cmd 中时有效。日志文件按预期创建为“2015_06_25__11_20_46.log”。但是,粘贴到批处理文件中,然后在 cmd 中运行时,它不起作用。 Cmd 解释命令如下:

"C:\Program Files\PostgreSQL\9.4\bin\vacuumdb.exe" --username postgres --verbose --analyze --all  8_21_42.log  1>E:\Logs\VacuumDB\2015_06_26_ 2>&1

注意文件名是如何被截断的,并且时间现在附加到命令参数而不是在文件名中。很明显命令失败了。

这当然是一件非常简单的事情,但我还没有找到解决这个问题的方法。非常感谢任何帮助。

谢谢!

最佳答案

这是一个不使用 SET 命令的内联版本

C:\test.bat > C:\log\test_%date:~10%%date:~4,2%%date:~7,2%-%time:~0,2%%time:~3,2%%time:~6,2%.log 2>&1

此示例将从 C:\test.bat 获取输出并将名为 test_YYYYMMDD-HHMMSS.log 的日志写入 C:\log目录

输出文件示例:c:\log\test_20181008-1121.log

关于Windows 批处理文件将输出重定向到带有日期/时间的日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31073197/

相关文章:

R 如何将应用函数用于时间序列对象并将日期附加到特定列?

mysql - MySQL中如何根据日期进行累计计数?

linux - 我如何在批处理文件中写这个

windows - 从 vbox 复制/粘贴到 windows

c++ - 如何检测是否有任何应用程序进入全屏或退出全屏?

python - 编译后的 Python 写入程序文件

windows - 是否可以将 Windows 设置为在插入符合 HID 标准的 USB 设备时自动启动应用程序?

php - 如何使用 PHP 找到一个月中的第一个和最后一个日期?

windows - 递归查找和替换文件

batch-file - 使用带有特殊字符的批处理回显