遍历所有子目录——BAT文件

 

 


for     

对一组文件中的每个文件运行指定的命令。
   可以在批处理程序中或直接从命令提示符使用 for 命令。
   要在批处理程序中使用 for 命令,请使用以下语法:
for %%variable in (set) docommand [command-parameters]
   要在命令提示符下使用 for,请使用以下语法:
for %variable in (set) do command [command-parameters]
参数
%%variable 或 %variable
   代表可替换的参数。for 命令使用在 set 中指定的每个文本字符串替换 %%variable(或 %variable),直到此命令(在 commandparameters中指定)处理所有的文件为止。使用 %% variable 在批处理程序中执行 for 命令。使用 % variable 通过命令提示符执行 for 命令。变量名区分大小写。
(set)
   指定要用指定的命令处理的一个或多个文件或文本字符串。需要括号。
command
   指定要在指定的 set 所包含的每个文件上执行的命令。
command-parameters
   指定要用于指定命令(如果指定的命令要使用任何参数或开关)的任何参数或开关。
   如果启用了命令扩展(Windows 2000 中的默认设置),将支持 for 命令的其他形式。
For 命令的其他形式
   如果启用了命令扩展,将支持如下 for 命令的其他格式:
只限于目录
for /D [%% | %]variable in (set) docommand [command-parameters]
   如果 set 包含通配符(* 和 ?),则指定与目录名匹配,而不是文件名。
递归
for /R [[drive :]path] [%% | %]variable in (set) docommand [command-parameters]
   进入根目录树[drive:]path,在树的每个目录中执行 for 语句。如果在 /R 后没有指定目录,则假定为当前目录。如果 set 只是一个句号 (.) 字符,则只列举目录树。
迭代
for /L [%% | %]variable in (start,step,end) do command [command-parameters]
   集合是一系列按步长量划分的、从头到尾的数字。这样,(1,1,5) 将生成序列 1 2 3 4 5,而 (5,-1,1) 将生成序列 (5 4 3 2 1)。
文件解析
for /F ["options"] [%% | %]variable in (filenameset) do command [command-parameters]
for /F ["options"] [%% | %]variable in ("literal string") do command[command-parameters]
for /F ["options"] [%% | %]variable in ('command') do command [command-parameters]
或者,如果出现 usebackq 选项:
for /F ["options"] [%% | %]variable in (filenameset) do command [command-parameters]
for /F ["options"] [%% | %]variable in ('literal string') do command [command-parameters]
for /F ["options"] [%% | %]variable in (`command`) docommand [command-parameters]
filenameset 参数指定一个或多个文件名称。在继续到 filenameset 中的下一个文件之前,每个文件都会被打开、读取和处理。
   过程由读取文件、分成独立的文本行及然后将每行解析成零个或更多个令牌组成。然后使用设置为找到的一个或多个令牌字符串的变量值(或多个值)集合调用 for 循环体。默认情况下,/F 传递每个文件每一行的第一个空白分隔符号。
跳过空行。通过指定可选的"options"参数可以覆盖默认的解析行为。这是一个引用字符串,它包含一个或多个关键字以指定不同的解析选项。

例子:

for /r %%c in (*.js) do CScript //I pack.wsf %%c >%%c

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用递归算法在 bat 脚本中遍历查询子文件夹中的子文件。具体实现方法如下: 1. 定义一个函数,该函数用于遍历文件夹中的所有文件。 2. 在函数中使用 for /f 命令遍历文件夹中的所有文件。 3. 如果遍历到的文件文件夹,则递归调用该函数,对该文件夹进行遍历。 4. 如果遍历到的文件文件,则执行相应的操作(例如输出文件名)。 5. 调用该函数,并传入需要遍历的根文件夹路径作为参数。 示例: ``` @echo off call :traverse "D:\folder" exit /b :traverse set "folder=%~1" for /f "delims=" %%a in ('dir /b /s /a-d "%folder%"') do ( if not "%%~xa"=="" ( echo File: "%%a" ) else ( echo Folder: "%%a" call :traverse "%%a" ) ) ``` 上面这段代码会把 D:\folder 及其子文件夹中的所有文件遍历一遍,并输出文件文件夹的路径。 ### 回答2: 编写BAT脚本可以使用FOR命令来遍历查询子文件的子文件。以下是一个示例脚本: ```bat @echo off setlocal set "dir_path=C:\your\directory\path" for /r "%dir_path%" %%f in (*) do ( echo %%f ) ``` 上述脚本中,`dir_path`变量需要设置为要查询的目录的路径。`for /r`命令将遍历该目录下的所有文件,包括所有子文件夹中的文件。使用`%%f`来表示当前文件的路径,并在循环体内进行操作。在以上示例中,脚本只是简单地输出了每个文件的路径,你可以根据需要修改循环体内的操作。 注意,在BAT脚本中,关键字`FOR`和`IN`之间的变量名需要使用两个百分号(%%)来表示,而在命令提示符下使用单个百分号。此外,在编写脚本时,尽量避免使用中文字符,以免出现编码问题。 希望以上回答能够帮助到你,如果你有其他问题,请继续提问! ### 回答3: 要编写一个bat脚本来遍历查询子文件的子文件,你可以使用`FOR /R`命令来实现这个目标。下面是一个示例的bat脚本: ``` @echo off setlocal enabledelayedexpansion set "root_folder=C:\your\root\folder" for /r "%root_folder%" %%a in (*) do ( echo File: %%a echo ----------------------- for /r "%%a" %%b in (*) do ( echo Sub File: %%b ) echo. ) endlocal ``` 在这个脚本中,你需要将`root_folder`设置为要遍历的根文件夹的路径。然后,使用两个嵌套的`FOR /R`循环遍历文件夹及其子文件夹中的文件。 第一个`FOR /R`循环(外部循环)会遍历文件夹及其子文件夹中的所有文件,并将每个文件的路径存储在`%%a`变量中。 然后,在内部循环中,使用`%%a`作为子文件夹的路径,再次使用`FOR /R`循环(内部循环)来遍历每个子文件夹中的文件,并将每个子文件的路径存储在`%%b`变量中。 在内部循环中,你可以根据需要使用`echo`命令来处理每个子文件的路径。在这个示例中,我简单地使用`echo`将子文件的路径打印到控制台。 这是一个简单的例子来遍历查询子文件的子文件。你可以根据你的需求进一步扩展和修改这个脚本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值