[英]windows batch script .bat for loop
我很難理解下面的代碼在做什么。
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
是什么意思?
我知道這是一個for循環。 正確
/ f =>我想這意味着目錄中的每個文件。 不完全的。 /f
是一種“多功能開關”-請參閱for /?
詳情
delims = :. =>我知道這意味着使用:作為分隔符。 不知道是什么。 手段。 它定義了:
和.
作為分隔符-字符串將在每個字符處分割
tokens = 1-4 =>似乎這是在目錄no中捕獲前四個文件,它捕獲了字符串的前四個令牌(由定義的delims分隔)
for /f
循環將其分為四個標記: %%t
是第一個,然后是字母: %%u
, %%v
和%%w
%% t =>不確定這是什么(第一個)令牌的變量名
(“%TIME:= 0%”)=>不知道這意味着它將字符串中的每個空格替換為零-請參閱set /?
詳情
因此,對於符合上述條件的每個文件,它都會執行此操作: 與此處的文件無關
設置FILENAME = event-%5-%%% t %% u %% v %% w =>我認為這意味着重命名每個文件。 不,它通過連接多個字符串來創建一個名為filename
的變量
它的真正作用是:
%time%
是一個內部變量,包含當前時間。 (注意,時間格式取決於本地設置-代碼片段假定格式為9:11:22.33
( 9
之前有一個空格))。
%time: =0%
替換了空格,結果為09:11:22.33
。
for /f
循環將此字符串分成四個標記( %%t
= 09
, %%u
= 11
, %%v
= 22
和%%w
= 33
。
%5
是第五個參數的批處理文件(讓我們假設,它是whatever
)
set FILENAME=event-%5-%%t%%u%%v%%w
將filename
變量設置為event-whatever-09112233
我建議將SS64標記為書簽並定期訪問。 您還可以通過使用/?
執行每個命令來獲得幫助/?
開關( for /?
set /?
等)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.