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

Formatting date and time in batch file using Powershell

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

为此,我使用以下代码将 %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% 确定这是由于日期和时间之间的 space,我想要的。

错误是什么,如何解决?

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

你可以试试这些

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 命令使用 space 和制表符作为分隔符来标记正在处理的行,默认情况下仅检索行中的第一个标记(在您的情况下为日期)。由于您的输出有两个 space 分隔的标记,我们需要禁用分词器(第一个示例,通过清除定界符列表),请求行中的所有标记(第二个示例)或仅请求所需的标记(第三个示例)