解释一条批处理

来源:百度知道 编辑:UC知道 时间:2024/05/25 00:40:33
一条批处理

for /f "tokens=1 delims=:" %%a in ('dir /s /b "./" ^| findstr /n .*') do set num=%%a
echo %num%

findstr /n .* 和 ^| 是什么意思??
谢谢了,我懂了,用就是 ^| 是子命令。
回答,3楼,用findstr \n .* 的意思是显示行号,不写,不会出行号的。

|
管道命令
用于将前一个命令的执行结果输出到后一个命令
在上句中表示将dir结果输给findstr命令;
因为是dir命令是for的子命令,所有要在 | 前加入 ^ ,变成了^|;

findstr /n .* 表示查找任意字符包括空行和空字符

for /f "tokens=1 delims=:" %%a in ('dir /s /b "./" ^| findstr /n .*') do set num=%%a
echo %num%
=========================
这盘程序将会获取当前目录下的所有文件和文件夹(包括子文件夹下的任何文件),还有,也会包含文件夹名字都输出...
这里的|是把每取到的结果等同于每行前加上行号,
比如你渠道的结果是
a.txt
b.txt
c.txt
那么会变成
1:a.txt
2:b.txt
3:c.txt
但是你这里的程序,我发现用findstr /n .*并没什么意义

findsstr /n .* 是指搜索文件中的每一个字符。

^|不是一起的,|是管道,在dir /s /b 后执行findstr /n .*
是逻辑关系。^是转移符,就是改变管道|的意思,使findstr只是显示内容,
不被当做命令执行。