批处理和Powershell语句的优先顺序

批处理和Powershell语句的优先顺序,powershell,batch-file,Powershell,Batch File,我想按以下顺序运行上面的命令 1-将%%I替换为当前值,例如-1 2-按如下所示运行powershell命令 PowerShell $date = Get-Date; $date=$date.AddDays(%%I); $date.ToString('MM-dd-yyyy') >c:\temp\datas 3-将结果放入文件C:\temp\datas 可以吗?你为什么不试试呢?它工作得很好,尽管速度很慢。我假设您真的想使用append模式,否则您的文件永远不会超过一行 PowerShel

我想按以下顺序运行上面的命令

1-将%%I替换为当前值,例如-1

2-按如下所示运行powershell命令

PowerShell $date = Get-Date; $date=$date.AddDays(%%I); $date.ToString('MM-dd-yyyy') >c:\temp\datas
3-将结果放入文件C:\temp\datas


可以吗?

你为什么不试试呢?它工作得很好,尽管速度很慢。我假设您真的想使用append模式,否则您的文件永远不会超过一行

PowerShell $date = Get-Date; $date=$date.AddDays(-1); $date.ToString('MM-dd-yyyy')
以下更复杂的形式也适用。我不确定什么时候需要这份表格

@echo off
for /l %%I in (-10, 1, 10) do PowerShell $date = Get-Date; $date=$date.AddDays(%%I); $date.ToString('MM-dd-yyyy') >>c:\temp\datas
为每次迭代调用PowerShell非常慢,因为每次加载PowerShell都需要时间。如果将循环放在PowerShell中,速度会快得多

使用批处理循环更有效的另一个选项是使用我的:


您从哪里获得
%%I
?听起来您可能只是想使用纯PowerShell来实现这一点。
@echo off
for /l %%I in (-10, 1, 10) do PowerShell -command "&{$date = Get-Date; $date=$date.AddDays(%%I); $date.ToString('MM-dd-yyyy')}" >>c:\temp\datas
@echo off
for /l %%I in (-10, 1, 10) do call getTimestamp -od %%I -f "{mm}-{dd}-{yyyy}" >>c:\temp\datas