Windows批处理脚本.bat循环

时间:2018-09-21 15:56:16

标签: windows batch-file batch-rename

我很难理解下面的代码在做什么。

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是什么意思?

1 个答案:

答案 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

whateverset FILENAME=event-%5-%%t%%u%%v%%w变量设置为filename

我建议将SS64添加为书签并定期访问。您还可以通过使用event-whatever-09112233开关(/?for /?等)执行每个命令来获取帮助