使用Powershell在批处理文件中格式化日期和时间

时间:2017-06-19 05:56:47

标签: powershell batch-file windows-7 powershell-v2.0 datetime-format

我想使用特定格式的当前日期和时间命名文件。

为此,我有以下代码将%datetime%设置为我想要的格式 示例:2017-06-19 05_00_00

for /f %%a in ('powershell -Command "Get-Date -format yyyy-MM-dd\ HH_mm_ss"') do set datetime=%%a

这不太合适。我99%肯定这是由于我想要的日期和时间之间的空间。

错误是什么,如何解决?

(请注意,我不能依赖WMIC,所以调用Powershell可能是最好的解决方案。无论如何,我有兴趣学习如何使这个特定的代码工作。)

1 个答案:

答案 0 :(得分:2)

您可以尝试使用其中任何一种

for /f "delims=" %%a in ('
    powershell -Command "Get-Date -format 'yyyy-MM-dd HH_mm_ss'"
') do set "datetime=%%a"

for /f "tokens=*" %%a in ('
    powershell -Command "Get-Date -format 'yyyy-MM-dd HH_mm_ss'"
') do set "datetime=%%a"

for /f "tokens=1,2" %%a in ('
    powershell -Command "Get-Date -format 'yyyy-MM-dd HH_mm_ss'"
') do set "datetime=%%a %%b"

原始代码的更改

  1. 格式字符串已被引用
  2. for /f命令将使用空格和制表符处理的行标记为分隔符,默认情况下仅检索行中的第一个标记(在您的情况下为日期)。由于您的输出有两个空格分离标记,我们需要禁用标记生成器(第一个样本,通过清除分隔符列表),请求行中的所有标记(第二个样本)或仅请求所需的标记(第三个样本)