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