Answers:
在Task Scheduler中尝试将其作为命令字符串:
cmd /c yourscript.cmd > logall.txt
cmd /c ""C:\temp\My test dir\something 123\myTool.exe" > Tilo_log.txt 2>&1"
cmd.exe
命令处理器构建带有时间戳的文件名,以记录计划任务的输出为了在此基于其他人的答案,可能是您要创建一个输出文件,该文件的日期和/或时间嵌入到文件名中。您可以使用cmd.exe
命令处理器为您执行此操作。
注意:此技术采用内部Windows环境变量的字符串输出,并根据字符位置将它们切成薄片。因此,以下示例中提供的确切值可能不适用于您使用的Windows区域。此外,在某些区域设置中,日期或时间的某些组成部分的值小于10时,它们可能会在构造的文件名中引入一个空格。为缓解此问题,请在文件名中加上引号,以使文件中任何非预期的空格名称不会破坏您正在构建的命令行。实验并找到最适合您的情况的方法。
请注意,此PowerShell
功能比强大cmd.exe
。一种更强大的方法是它可以处理不同的Windows区域。但是这个答案是关于使用cmd.exe
而不是解决此问题的PowerShell
,所以我们继续。
使用 cmd.exe
您可以通过对内部环境变量进行切片来访问日期和时间的不同组成部分%date%
和%time%
,如下所示(同样,确切的切片值取决于Windows中配置的区域):
%date:~10,4%
%date:~4,2%
%date:~7,2%
%time:~0,2%
%time:~3,2%
%time:~6,2%
假设您要使用以下日期/时间格式命名日志文件:“ Log_[yyyyMMdd]_[hhmmss].txt
”。您将使用以下内容:
Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
要对此进行测试,请运行以下命令行:
cmd.exe /c echo "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt"
将所有内容放在一起,以将这两者stdout
以及stderr
从脚本重定向到以当前日期和时间命名的日志文件,可以使用以下命令作为命令行:
cmd /c YourProgram.cmd > "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt" 2>&1
请注意,使用文件名两边的引号来处理日期或时间部分可能会引起空格的实例。
就我而言,如果当前日期/时间是10/05/2017 9:05:34 AM,则上述命令行将产生以下内容:
cmd /c YourProgram.cmd > "Log_20171005_ 90534.txt" 2>&1
示例如何运行程序并使用时间戳将stdout和stderr写入文件:
cmd /c ""C:\Program Files (x86)\program.exe" -param fooo >> "c:\dir space\Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt" 2>&1"
关键部分是用双引号将后面的整个部分cmd /c
括起来,在里面使用照常使用双引号。另请注意,日期取决于语言环境,此示例使用美国语言环境。