cmd命令之for循环
在 Windows 系统中,命令提示符(CMD)和 PowerShell 都支持for
循环,但语法差异较大。以下是两者的详细说明:
1. 命令提示符(CMD)中的for
循环
CMD 的for
循环有多种变体,适用于不同场景:
① 遍历文件或目录
for %变量 in (文件模式) do 命令
示例:遍历当前目录下所有
.txt
文件并显示文件名:for %f in (*.txt) do echo %f
在批处理文件中需将
%
改为%%
:for %%f in (*.txt) do echo %%f
参数说明:
%变量
:自定义变量名,如%f
、%i
。(文件模式)
:支持通配符*
和?
,如*.exe
、data?.txt
。
② 遍历数字序列
需结合/L
参数:
for /L %变量 in (起始,步长,结束) do 命令
- 示例:输出 1 到 5 的数字:
for /L %i in (1,1,5) do echo %i
批处理文件中:for /L %%i in (1,1,5) do echo %%i
③ 遍历命令输出
需结合/F
参数:
for /F "选项" %变量 in ('命令') do 命令
- 示例:遍历当前目录下的文件并显示大小:
for /F "tokens=5,9" %a in ('dir') do echo %a %b
tokens=5,9
:提取第 5 和第 9 列数据(大小和文件名)。
2. PowerShell 中的for
循环
PowerShell 的语法更接近编程语言,支持两种主要写法:
① 标准for
循环(类 C 语法)
for ($变量=初始值; 条件; 更新) { 命令 }
- 示例:输出 1 到 5 的平方:
for ($i=1; $i -le 5; $i++) {Write-Host ($i * $i) }
② foreach
循环(遍历集合)
foreach ($变量 in 集合) { 命令 }
- 示例:遍历数组并打印元素:
$numbers = 1, 2, 3, 4, 5 foreach ($num in $numbers) {Write-Host $num }
3. 常见场景对比
场景 | CMD 语法示例 | PowerShell 语法示例 |
---|---|---|
遍历文件 | for %f in (*.txt) do echo %f | Get-ChildItem *.txt | ForEach-Object { $_.Name } |
遍历数字 | for /L %i in (1,1,5) do echo %i | for ($i=1; $i -le 5; $i++) { Write-Host $i } |
遍历命令输出 | for /F %a in ('dir /b') do echo %a | dir /b | ForEach-Object { $_ } |
注意事项
- CMD 与 PowerShell 的区别:
- CMD 是 Windows 传统命令行,语法简单但功能有限。
- PowerShell 是现代替代方案,支持面向对象、管道和高级脚本。
- 批处理文件中的变量:在
.bat
或.cmd
文件中,CMD 的for
变量需用双%%
(如%%i
)。 - 特殊字符:若命令中包含特殊字符(如
&
、|
),需用^
转义(CMD 中)。
根据需求选择合适的语法,PowerShell 通常更适合复杂脚本,而 CMD 适用于简单任务。