我在cmd中运行以下命令:
Prog.exe -time Components_2016_04_19_11.ss
我想编写一个每小时运行一次的批处理文件,我需要命令中的日期相应更改 - 日期需要采用上面的格式,日期的最后一部分是当前小时减去7小时
因此,如果现在的时间是2016年1月1日20:43,那么命令将如下所示
Prog.exe -time Components_2016_01_01_13.ss
我需要帮助创建适当的批处理文件
由于
答案 0 :(得分:2)
供将来参考,类似于“为我写这个。这是我的要求”的问题。在这附近不受欢迎。但这一次,为了防止发布更多无用的答案,我会帮你解决问题。
使用日期数学,纯批次非常麻烦。补偿午夜,月份变化,闰年等可能是一场噩梦。使用不同语言要容易得多 - 一种具有正确Date对象的语言,可以处理日历怪癖,而不必破解它们。
这是针对您的问题的PowerShell解决方案:
Prog.exe -time ("Components_{0}.ss" -f (Get-Date).addHours(-7).toString("yyyy_MM_dd_HH"))
就是这样,只是一个单行。如果需要批处理脚本,可以使用PowerShell帮助程序执行日期数学繁重操作。
@echo off & setlocal
for /f "delims=" %%I in (
'powershell -noprofile "(Get-Date).addHours(-7).toString('yyyy_MM_dd_HH')"'
) do (
Prog.exe -time Components_%%I.ss
)
goto :EOF
答案 1 :(得分:1)
Get-Date
Get-Date | Get-Member
答案 2 :(得分:1)
你可以用这个:
$GBL = 0
do{
Prog.exe
Get-Date
sleep 3600
}
while($GBL -lt 1)
$GBL
它是循环的无穷大变量。在 do 内部执行程序并使用 sleep 等待 3600秒或 1小时再次执行。 Get-Date
用于标记执行代码的日期和时间。
我不明白你是否需要这个或其他东西。
您可以使用所需的代码修改Prog.exe
行。
如果你回答我,我可以帮助你。
祝你有个美好的一天(