windows 批处理脚本或命令提示符是否可以仅列出某个文件夹中的目录而不包括硬盘驱动器?

Is there any way for windows batch script or command prompt to list the directories from a certain folder only without including the hard drive?

我尝试使用 dir /b/s *.png 列出我所有 png 文件的目录。结果是这样的:

D:\Newfolder\test\images\approved.png
D:\Newfolder\test\images\approved.png
D:\Newfolder\test\images\approved.png
D:\Newfolder\test\images\approved.png
D:\Newfolder\test\images\approved.png
D:\Newfolder\test\images\approved.png
D:\Newfolder\test\images\approved.png
D:\Newfolder\test\images\approved.png
D:\Newfolder\test\images\approved.png
D:\Newfolder\test\images\approved.png

我希望将其缩短,以便仅从 images 文件夹开始显示;

images\approved.png
images\approved.png
images\approved.png
images\approved.png
images\approved.png
images\approved.png
images\approved.png
images\approved.png
images\approved.png
images\approved.png

可以吗? 如果不是,我有没有办法通过从生成的文本文件中删除前几个文件夹来编辑目录?

说我把 dir /b/s *.png > path.txt 我如何编辑文本,因为列表没有空格。

我对此还是个新手,所以我不太熟悉很多命令,但这是我所能理解的。

假设您的问题中有此评论:

"I want it to be shortened so it will display only starting from the "images" folder;"

你总是想从图像文件夹中获取,并假设图像文件夹始终存在于路径中:

@echo off & setlocal enabledelayedexpansion
for /R %%i in (*.png) do (
   set "_fp=%%~i"
   echo !_fp:*\images\=images\!"
)
pause

或者明确确保您只在路径中包含带有 \images\ 的路径:

@echo off & setlocal enabledelayedexpansion
for /F "delims=" %%i in ('dir /b /s *.png ^| findstr \images\') do (
   set "_fp=%%~i"
   echo !_fp:*\images\=images\!"
)
pause

使用 pushd 的示例:

@echo off & setlocal enabledelayedexpansion
pushd "%~1"
for /F "delims=" %%i in ('dir /b /s *.png ^| findstr \images\') do (
   set "_fp=%%~i"
   echo !_fp:*\images\=images\!"
)
pause
popd

所以上面你可以 运行 从 cmd 并简单地将你想要脚本的路径传递给 运行 作为 script_name.cmd "C:\some path\here"