batch-file - 获取给定位置的子文件夹的文件夹路径列表
问题描述
我需要创建一个批处理脚本来获取位于特定给定位置的目录的所有子文件夹(不是递归!)的列表,其中目录名称以几个预定义值之一开头。该列表应仅包含绝对路径。我不能使用 Powershell 或其他附加工具。
@echo off
set "yourDir=C:\FileStore"
for %%b in ("AB*","FG*") do (
for /d %%a in ("%yourDir%\%%b") do (
echo %%~fa
)
)
这会导致一个空列表并且不起作用......
解决方案
代码中的循环在当前目录中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
包含通配符,因此它实际上搜索匹配的直接子目录。
推荐阅读
- django - How to create multiple models from the same form in Django
- php - Date and time filter comparison doesn't work in Laravel
- python - How do I load a file into a dictionary where key:text, val: numpy array of floats?
- c - C - read file and strtok into array
- tensorflow - 如何获得与 TF 中隐藏层相关的权重?
- azure-devops-rest-api - Create Azure Devops (security) group like 'Contributors' with Permissions via Rest API or Client DLL
- linq - 我正在学习的 asp.net 核心项目中的 Linq 和 SQL 注入
- javafx - 为什么在播放音频后显示图像视图,而在 javafx 中播放音频之前将图像的可见性设置为 true?
- gnuradio-companion - [gnuradio-companion]ModuleNotFoundError 无法导入 gnuradio
- java - Can't visualize the insertion of a node at the end of a linked list