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 offset @=有问题联系&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命令,如何只遍历当前文件夹及下一层子文件夹的主要内容,如果未能解决你的问题,请参考以下文章