2015-02-23 140 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循环内部,因此该命令的输出可以存储在一个变量中。