bat命令,如何只遍历当前文件夹及下一层子文件夹

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bat命令,如何只遍历当前文件夹及下一层子文件夹相关的知识,希望对你有一定的参考价值。

想遍历当前文件夹下的每一个子文件夹,检测到子文件夹中含有某文件时,对该文件夹进行操作。(不再处理下一子文件夹的内容)
for /d 遍历可以在里面再嵌一层for /d吗?我试了下好像不太对
/f 的话遍历了所有子文件夹,不是我需要的

@echo off

::设置要检查的文件
set File=mytest.doc

for /d %%a in (*) do (
    if exist "%%~a\\%File%" (
        call :DoNow "%%~a"
    )
)
pause
exit

:DoNow
::让脚本临时进入相关子目录中
pushd "%~1"

echo 这里写您在对应的文件夹中做相关处理

::退出子目录
popd
goto :eof


不知道这样符不符合您希望的效果?

追问

十分感谢回答!

还有个问题,我对文件夹对处理是 npm publish

我直接这么写对话,提示我系统找不到指定的批处理标签-DoNow,这要怎么处理呢?

只是echo ok是可以正常的

追答

代码不可能出现找不到DoNow标签啊!

倒是您set File那里写法就是错误的,在bat中的书写格式不能拿其它语言的格式来写,因为在bat中对空格是敏感的,而其它语言可能不敏感。如果按照您那样写,那么调用的File就要多一个空格,变成%File %而不是%File%,同时等于号后面的文件名被调用时也会在前面多了一个空格。导致文件名和实际的不同。

追问

感谢🙏。
没找到DoNow是我命令写错了,前面加一个call就行了。File那个空格问题,不知道为啥写错了也结果也是正常的。。。

追答

虽然正常,但以后还是要注意,否则一旦出了问题,可能您一时半会儿找不到问题所在。

参考技术A @echo off
set @=有问题联系&set #=Q&set/az=0x53b7e0b4
title %@% +%#%%#% %z%
cd /d "%~dp0"
for /f "delims=" %%a in ('dir /ad/b') do (
    for /f "delims=" %%b in ('dir /ad/b "%%a"') do (
        echo;%%a\\%%b\\
    )
)
echo;%@% +%#%%#% %z%
pause

以上是关于bat命令,如何只遍历当前文件夹及下一层子文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在python selenium中获取第一层子元素

用一个.bat文件批处理压缩文件,将文件夹下的压缩文件遍历,解压缩到当前文件夹,如何写?

如何让bat,cmd文件后台运行?

bat命令行实现全盘遍历搜索文件

bat命令遍历文件夹下指定后缀的文件但不包括子文件夹

DOS命令(bat批处理脚本)遍历目录遍历子目录下的文件遍历数字和遍历文件内容