批处理文件

时间:2016-04-21 16:20:19

标签: powershell batch-file cmd

我在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

我需要帮助创建适当的批处理文件

由于

3 个答案:

答案 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行。

如果你回答我,我可以帮助你。

祝你有个美好的一天(