如何使用同一行代码为命令行和batch file转义%%?

我正在尝试运行这一行:

for /f "tokens=1* delims=" %%a in ('date /T') do set datestr=%%a 

从命令行,但得到的错误:

 %%a was unexpected at this time. 

然后我search,发现:

  1. “这个时候是意外的。”
  2. %% A在这个时候是意外的

问题是转义batch file%我需要添加其中两个,但在命令行我只需要它的一个。 我怎么写兼容命令行和batch file在同一行代码?

不是一个班轮,但是当你可以住两条线

 set "pp=%%" for /f "tokens=1* delims=" %pp:~-1%a in ('date /T') do set datestr=%pp:~-1%a 

为什么不使用

 set "datestr=%date%" 

这将设置datestr作为一个内置的魔术变量date的当前值?

当然,这不包括可能需要的操作,因为%date%date /t都以用户选择的格式返回日期 – 没有直接批量使用的通用格式; 你需要使用可能或不可用的wmic

如果从命令行执行此操作,则需要单个%

 for /f "tokens=1* delims=" %a in ('date /T') do set datestr=%a 

双百分比是从.bat或.cmd文件运行此。