我需要创建一个批处理脚本,以获取位于特定给定位置的目录的所有子文件夹(不是递归!)的列表,其目录名称以几个预定义值之一开头。该列表应仅包含绝对路径。我不能使用Powershell或其他附加工具。
@echo off
set "yourDir=C:\FileStore"
for %%b in ("AB*","FG*") do (
for /d %%a in ("%yourDir%\%%b") do (
echo %%~fa
)
)
这将导致列表为空,并且不起作用...
答案 0 :(得分:1)
代码中的for %%b
循环在当前目录中搜索与模式AB*
和FG*
相匹配的文件。
您可以这样做:
@echo off
set "yourDir=C:\FileStore"
pushd "%yourDir%" && (
for /D %%a in ("AB*","FG*") do (
echo %%~fa
)
popd
)
您也可以在"%yourDir%\AB*","%yourDir%\FG*"
后面写上in
,但是使用pushd
和popd
可以避免重复指定根目录。
或者您可以这样做:
@echo off
set "yourDir=C:\FileStore"
for %%b in ("AB","FG") do (
for /D %%a in ("%yourDir%\%%~b*") do (
echo %%~fa
)
)
由于in
循环的for %%b
子句中不再存在通配符,因此将原封不动地返回项目,而无需在文件系统中搜索匹配的文件。 for /D %%a
循环现在包含通配符,因此它实际上搜索匹配的直接子目录。