Batch file 如何批量导航到for循环中的子文件夹?

Batch file 如何批量导航到for循环中的子文件夹?,batch-file,for-loop,cd,Batch File,For Loop,Cd,使用cd%%~i我想将脚本导航到U:\testbmbf\0012…..之后的下一个子文件夹。。。。。在同一层次结构级别上有许多这样的子文件夹。然后,脚本应该只在同一层次结构级别的所有这些子文件夹中搜索具有以下5个扩展名的文件 问题是脚本正在遍历整个层次结构树,并搜索所有可能的子级别 如何“锁定”脚本,以便只在下一个层次结构级别搜索文件扩展名,而不搜索更深层次的文件扩展名?CD%%我似乎不在这里工作 @echo off SETLOCAL enabledelayedexpansion for %%

使用
cd%%~i
我想将脚本导航到U:\testbmbf\0012…..之后的下一个子文件夹。。。。。在同一层次结构级别上有许多这样的子文件夹。然后,脚本应该只在同一层次结构级别的所有这些子文件夹中搜索具有以下5个扩展名的文件

问题是脚本正在遍历整个层次结构树,并搜索所有可能的子级别

如何“锁定”脚本,以便只在下一个层次结构级别搜索文件扩展名,而不搜索更深层次的文件扩展名?CD%%我似乎不在这里工作

@echo off
SETLOCAL enabledelayedexpansion
for  %%i in (U:\testbmbf\0012\) do (
    cd %%~i 
    for /r %%j in (*.tif) do U:\md5.exe %%j >> U:\check_before.txt && echo checking md5sum %%j
    for /r %%j in (*.txt) do U:\md5.exe %%j >> U:\check_before.txt && echo checking md5sum %%j
    for /r %%j in (*.pdf) do U:\md5.exe %%j >> U:\check_before.txt && echo checking md5sum %%j
    for /r %%j in (*.tei) do U:\md5.exe %%j >> U:\check_before.txt && echo checking md5sum %%j
    for /r %%j in (*.xml) do U:\md5.exe %%j >> U:\check_before.txt && echo checking md5sum %%j
    for /r %%j in (*.xls) do U:\md5.exe %%j >> U:\check_before.txt && echo checking md5sum %%j
)
这就是你的意思吗

@Echo关闭
对于(U:\testbmbf\0012\*)中的/D%%A,请执行以下操作(
PushD“%%A”
对于(*.pdf*.tei*.tif*.txt*.xls*.xml)中的%%B,请执行以下操作(
回显检查md5sum%%B
U:\md5.exe“%%B”>>U:\check\U before.txt
)
流行音乐
)
这就是你的意思吗

@Echo关闭
对于(U:\testbmbf\0012\*)中的/D%%A,请执行以下操作(
PushD“%%A”
对于(*.pdf*.tei*.tif*.txt*.xls*.xml)中的%%B,请执行以下操作(
回显检查md5sum%%B
U:\md5.exe“%%B”>>U:\check\U before.txt
)
流行音乐
)

我要尝试的第一件事是删除执行递归的
/r
开关。将
cd%%~I
更改为
cd/d“%%~I”
;或者将其替换为
pushd“%%~i”
,并将
popd
放在最后一个
之前。或者将整个
cd
命令行和
/R
for
循环的内部
中移除,然后将(*.tif)
中的
替换为(“%%~i\*.tif”)中的
。我相信您需要使用
for/D
作为外部循环…我要做的第一件事是删除执行递归的
/r
开关。将
cd%%~I
更改为
cd/D“%%~I”
;或者将其替换为
pushd“%%~i”
,并将
popd
放在最后一个
之前。或者将整个
cd
命令行和
/R
for
循环的内部
中移除,然后将(*.tif)
中的
替换为(“%%~i\*.tif”)中的
。我相信你需要使用
for/D
作为外循环…很好的一个+1,几乎和我要发布的一样。很好的一个+1,几乎和我要发布的一样。