千家信息网

Windows Bat 之For 循环

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,Windows Bat 之For 循环1. For 循环基本用法。1.1 格式在cmd窗口中:FOR %variable IN (set) DO command [command-parameters
千家信息网最后更新 2025年01月31日Windows Bat 之For 循环

Windows Bat 之For 循环

1. For 循环基本用法。

1.1 格式

在cmd窗口中:

FOR %variable IN (set) DO command [command-parameters]

在Bat文件中:

FOR %%variable IN (set) DO command [command-parameters]

注意点:在cmd窗口中,for之后的形式变量I必须使用单百分号引用,即%i;而在批处理文件中,引用形式变量i必须使用双百分号,即%%i。
For语句的基本要素都有些什么:
1、for、in和do是for语句的关键字,它们三个缺一不可;
2、%%I是for语句中对形式变量的引用,就算它在do后的语句中没有参与语句的执行,也是必须出现的;
3、in之后,do之前的括号不能省略;
4、set 表示字符串或变量,command表示字符串、变量或命令语句;

1.2 查看Windows 帮助文档

使用 for /? 既可以查看

1.3 实用举例

1.3.1 列出当前路径下的所有txt 文件。

for %%i in (??.txt) do echo "%%i"

1.3.2 文本解析显 for /f 用法。
1)将命令行的值赋值给变量。

for /f %i in ('wmic ComputerSystem get Manufacturer ^|find /v "Manu" ^| findstr .') do (set type=%i)

2)使用 "delims=" 指定分隔符,/f 默认是以空格或者Table 键作为分隔符。

for /f  "delims=," %i in ('wmic ComputerSystem get Manufacturer ^|find /v "Manu" ^| findstr .') do (set type=%i)

ps: IF 语句的结构

for /f %%i in ('wmic ComputerSystem get Manufacturer ^|find /v "Manu" ^| findstr .') do (set type=%%i)if %type%=="HP" (reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server"  /v fDenyTSConnections /t REG_DWORD /d 0 /f:: 开启远程桌面服务reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber /t REG_DWORD /d 0x0000b239 /freg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x0000b239 /f) else if %type%=="Dell" (reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server"  /v fDenyTSConnections /t REG_DWORD /d 0 /f:: 开启远程桌面服务reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber /t REG_DWORD /d 0x0000b275 /freg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 0x0000b275 /f)else (echo 您的服务器类型与指定的端口号不匹配)
0