如何解决任务计划程序:如何在输出文件的命名中使用cmd脚本?
我有一个c:\myapp
文件夹,其中包含MyProcess.exe
文件。我也有c:\myapplog
文件夹。
我在GetSuffix.cmd
文件夹中有一个名为c:\myapp
的cmd批处理文件,该文件计算一个值,然后在末尾回显该值。要返回的值是8个字符的长度。
@echo off
rem logic to set suffixV variable
echo %suffixV%
我希望安排MyProcess.exe
文件每天在特定时间运行。我想将其输出写为c:\myapplog
文件夹中的MyProcess_XXXXXXXX.log
文件,其中XXXXXXXX是一个字符串,其值需要来自GetSuffix.cmd
文件。
因此,在Task Scheduler中,我为此创建了一个Task。在此任务的操作启动程序中,我提到:
程序/脚本: cmd
添加参数(可选): / c MyProcess.exe> c:\ myapplog \ MyProcess_GetSuffix.cmd.log
开始于(可选): c:\ myapp
我运行了任务,并成功运行,但是它在MyProcess_GetSuffix.cmd.log
文件夹中创建了c:\myapplog
文件。 GetSuffix.cmd
未评估。我该怎么办?
示例
例如,GetSuffix.cmd
文件夹中名为c:\myapp
的cmd批处理文件包含以下几行:
@echo off
for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined MyDate set MyDate=%%x
set suffixV=%MyDate:~0,4%%MyDate:~4,2%%MyDate:~6,2%
echo %suffixV%
所以今天,如果我从cmd呼叫GetSuffix.cmd
,它将返回 20200812 。
所以今天我希望我的任务以这种方式运行:
cmd /c MyProcess.exe > c:\myapplog\MyProcess_20200812.log
明天,如果我从cmd呼叫GetSuffix.cmd
,它将返回 20200813 。
所以明天我希望我的任务以这种方式运行:
cmd /c MyProcess.exe > c:\myapplog\MyProcess_20200813.log
我该怎么做?
解决方法
我要说的是,安排一个运行“ run.cmd”的计划任务。将getsuffix更改为
@echo off
for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined MyDate set MyDate=%%x
set suffixV=%MyDate:~0,4%%MyDate:~4,2%%MyDate:~6,2%
// OUTPUTS TO A FILE FOR FUTURE USE
echo %suffixV% > suffix.temp
// PRINTS SUFFIX VARIABLE
echo %suffixV%
// EXITS
exit
然后,将其用于run.cmd:
@echo off
// WILL GET SUFFIX NUMBER
getsuffix.cmd
// SETS SUFFIX NUMBER AS VARIABLE
set /p suffix=<suffix.temp
// USES VARIABLE TO NAME FILE
cmd /c myprocess.exe > c:\myapplog\MyProcess_%suffix%.log
// DELETES THE EXTRA FILE
del suffix.temp
// EXITS
exit
或者,您可以将getsuffix.bat代码复制粘贴到计划的任务中,以使其全部成为一个文件。
希望这就是您想要的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。