如何使用相同的一行代码转义命令行和批处理文件的%%?

时间:2017-06-22 17:19:29

标签: windows batch-file cmd

我正试图运行这一行:

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

从命令行,但收到​​错误:

%%a was unexpected at this time.

然后我搜索并发现:

  1. "was unexpected at this time."
  2. %%A was unexpected at this time
  3. 问题是在批处理文件上转义%我需要添加其中两个,但在命令行中我只需要其中一个。如何编写兼容命令行和批处理文件的文件,将其保存在同一行代码中?

3 个答案:

答案 0 :(得分:3)

不是一个班轮,但是你可以住两行

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

答案 1 :(得分:3)

为什么不使用

set "datestr=%date%"

会将datestr设置为date的当前值作为内置魔术变量吗?

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

答案 2 :(得分:1)

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

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

双倍百分比用于从.bat或.cmd文件运行。