Windows中cmd应用之for(文件模式)通配符使用

Windows中cmd for循环通配符使用说明

在 Windows 命令提示符(CMD)或批处理脚本(.bat 文件)中,for 循环支持使用文件模式通配符来遍历文件和目录,以下是具体的使用说明:

基本语法

for %variable in (set) do command [command-parameters](在命令提示符中直接使用,变量用单百分号 %
for %%variable in (set) do command [command-parameters](在批处理脚本中使用,变量用双百分号 %%

其中,(set) 部分可以包含通配符,用于指定要处理的文件集合。

常用通配符

1. * 通配符

* 可以匹配任意长度的任意字符(包括空字符)。

  • 示例一:列出目录下所有文件
    在命令提示符中,输入 for %f in (*) do @echo %f ,这会列出当前目录下的所有文件和目录。@echo %f 用于输出每个匹配到的文件名,@ 符号的作用是禁止在执行命令时回显命令本身(即不在屏幕上显示 echo %f 这行命令 )。
  • 示例二:在批处理脚本中列出特定扩展名的文件
    在批处理脚本(如 test.bat)中写入以下内容:

@echo off
for %%f in (*.txt) do (
    echo 找到文本文件: %%f
)
pause

上述脚本会遍历当前目录下所有扩展名为 .txt 的文件,并输出文件名。

2. ? 通配符

? 只匹配一个任意字符。

  • 示例一:查找文件名特定位置字符的文件
    假设当前目录下有 file1.txtfile2.txtfilea.txt 等文件,在命令提示符中输入 for %f in (file?.txt) do @echo %f ,会匹配文件名是 file 开头,接着是任意一个字符,然后以 .txt 结尾的文件,例如会输出 file1.txtfile2.txt 等。
  • 示例二:在批处理脚本中处理特定格式文件名
    在批处理脚本中,如下代码可以查找文件名中第二个字符固定,其他位置有特定要求的文件:

@echo off
for %%f in (f?le*.txt) do (
    echo 匹配到符合格式的文件: %%f
)
pause

遍历子目录

如果要遍历指定目录及其子目录下的文件,可以结合 for /r 命令。

  • 示例一:命令提示符中查找所有子目录下的特定文件
    在命令提示符中输入 for /r C:\test %f in (*.log) do @echo %f ,这会从 C:\test 目录开始,递归查找所有子目录下扩展名为 .log 的文件,并输出文件的完整路径。
  • 示例二:批处理脚本中遍历子目录处理文件
    在批处理脚本中,如下代码可以对指定目录及其子目录下的所有 .xml 文件进行备份操作(假设备份到 backup 目录):

@echo off
set "sourceDir=C:\source"
set "backupDir=C:\backup"
if not exist %backupDir% mkdir %backupDir%
for /r %sourceDir% %%f in (*.xml) do (
    set "relativePath=%%~pf"
    setlocal enabledelayedexpansion
    set "backupPath=%backupDir%!relativePath:%sourceDir%=!"
    endlocal
    if not exist "!backupPath!" mkdir "!backupPath!"
    copy "%%f" "!backupPath!"
)
pause

上述脚本通过 for /r 遍历 C:\source 及其子目录下的 .xml 文件,创建对应的备份目录并进行文件复制。

其他有用的修饰符

1. ~ 修饰符

使用 ~ 修饰符可以对文件名进行各种处理,例如:

  • %%~nf:只获取文件名(不包含扩展名)。
  • %%~xf:只获取文件的扩展名。
  • %%~dp:只获取文件的路径(不包含文件名)。

例如,在批处理脚本中,如下代码可以将当前目录下所有文件的文件名和扩展名分别输出:

@echo off
for %%f in (*) do (
    echo 文件名: %%~nf
    echo 扩展名: %%~xf
)
pause

2. ~n 修饰符(其中 n 为数字)

%%~n$f 可以用于获取文件的短文件名,其中 n 取值范围是 0 到 9 ,例如 %%~0f 。在处理文件名中包含空格或特殊字符等情况时,有时需要用到短文件名来避免命令执行错误。

通过合理运用这些通配符和修饰符,for 循环可以灵活地处理文件和目录,满足不同的自动化处理需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值