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

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

2019-07-03 · 说的都是干货,快来关注
知道顶级答主
回答量:6.9万
采纳率:82%
帮助的人:1.7亿
展开全部

@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%,同时等于号后面的文件名被调用时也会在前面多了一个空格。导致文件名和实际的不同。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qop_dob
2019-07-11 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.3万
采纳率:79%
帮助的人:3922万
展开全部
@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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式