"对于"命令和" findstr"在Windows命令提示符下

时间:2015-02-23 05:52:05

标签: batch-file for-loop dos findstr

在另一篇文章中,我发现这个解决方案将文件重命名为ISO格式的当前日期:

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

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

1 个答案:

答案 0 :(得分:3)

这一行还有很多事情要做。

^是批处理的转义字符。它就在那里,以便下一个字符不会破坏for循环。 |是一个管道,它将左侧命令的输出发送到右侧的命令。 FINDSTR搜索字符串并返回它找到的任何字符串。

这里有点复杂: \是findstr的转义字符,允许按字面解释下一个字符。 .只是一个句号,但没有前面的\,它是一个单字符的通配符(f.re会选择票价和火力等)。

wmic os get localdatetime运行wmic并返回本地日期和时间,其输出如下所示:

LocalDateTime
20150223010540.071000-300

当你将它传递给findstr并告诉findstr返回包含单个句点的行时,你得到

20150223010540.071000-300

然后整个事情都在for /F循环内部,以便该命令的输出可以存储在变量中。