我很难理解下面的代码在做什么。
for /f "delims=:. tokens=1-4" %%t in ("%TIME: =0%") do (
set FILENAME=event-%5-%%t%%u%%v%%w
)
我知道它是for loop
。
/f
=>我想这意味着目录中的每个文件。
delims=:.
=>我知道这意味着使用:
作为分隔符。不确定.
是什么意思。
tokens=1-4
=>看来这正在抓取目录中的前四个文件
%%t
=>不确定这是什么意思
("%TIME: =0%")
=>不知道这是什么意思
因此,对于符合上述条件的每个文件,它都会执行以下操作:
set FILENAME=event-%5-%%t%%u%%v%%w
=>我认为这意味着重命名每个文件。
我也不明白的是:
event-%5-%% t %% u %% v %% w =>我知道“事件”是名称的一部分。但是%5-%%t%%u%%v%%w
是什么意思?
答案 0 :(得分:1)
我知道这是一个for循环。 正确
/ f =>我想这意味着目录中的每个文件。 不完全是。 /f
是一种“多功能开关”-有关详细信息,请参见for /?
delims =:。 =>我知道这意味着使用:作为分隔符。不知道是什么。手段。 它将:
和.
都定义为定界符-字符串将在每个字符处被分割
tokens = 1-4 =>看来这正在抓取目录中的前四个文件否,它抓取了字符串的前四个标记(由定义的delims分隔)
for /f
循环将其分为四个标记:%%t
是第一个,然后按字母顺序向下:%%u
,%%v
和%%w
%% t =>不确定这是什么意思这是(第一个)令牌的变量名
(“%TIME:= 0%”)=>不知道这是什么意思它将字符串中的每个空格替换为零-有关详细信息,请参见set /?
因此,对于符合上述条件的每个文件,它都会执行以下操作:与此处的文件无关
set FILENAME = event-%5-%% tt %% u %% v %% w =>我认为这意味着重命名每个文件。 否,它通过串联多个字符串来创建名为filename
的变量
它的真正作用:
%time%
是一个内部变量,包含当前时间。 (请注意,时间格式取决于本地设置-代码段采用9:11:22.33
格式(9
之前有一个空格))。
%time: =0%
替换空格,得到09:11:22.33
。
for /f
循环将此字符串分为四个标记(%%t
= 09
,%%u
= 11
,%%v
= {{1 }}和22
= %%w
。
33
是批处理文件的第五个参数(假设为%5
)
whatever
将set FILENAME=event-%5-%%t%%u%%v%%w
变量设置为filename
我建议将SS64添加为书签并定期访问。您还可以通过使用event-whatever-09112233
开关(/?
,for /?
等)执行每个命令来获取帮助