2015-02-23 141 views
0

在不同的崗位,我發現這個解決方案的文件重命名爲在ISO格式的當前日期:「對於」命令,在Windows的「FINDSTR」命令提示符

FOR /F %%A IN ('WMIC OS GET LocalDateTime ^| FINDSTR \.') DO @SET B=%%A 
copy test.java %B:~0,4%-%B:~4,2%-%B:~6,2%.java 

我明白了一切,除了這部分:

^| FINDSTR \. 

它是做什麼的?因爲「WMIC OS GET LocalDateTime」有這種格式

LocalDateTime 
20150223064808.538000+060 

我假設它以某種方式限制了刺痛。但是如何?

回答

3

該行有幾件事情正在進行。

^是批次的轉義字符。它在那裏,以便下一個字符不會中斷for循環。 |是一個管道,它將其左側的命令輸出發送到其右側的命令。 FINDSTR搜索字符串並返回找到的任何字符串。

下面是它變得有點複雜的地方: \是findstr的轉義字符,並允許字面解釋下一個字符。 .僅僅是一個時期,但沒有前述\,這是一個單字符通配符(f.re便拿起車費和火災等)

wmic os get localdatetime運行wmic,並返回本地日期和時間,以及其輸出看起來是這樣的:

LocalDateTime 
20150223010540.071000-300 

當通過管道將它FINDSTR告訴FINDSTR可以返回包含一個週期線,你會得到

20150223010540.071000-300 

而且那麼整個事件就在for /F循環內部,因此該命令的輸出可以存儲在一個變量中。