簡體   English   中英

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\11.png
D:\Newfolder\test\images\approved\12.png
D:\Newfolder\test\images\approved\13.png
D:\Newfolder\test\images\approved\14.png
D:\Newfolder\test\images\approved\15.png
D:\Newfolder\test\images\approved\16.png
D:\Newfolder\test\images\approved\17.png
D:\Newfolder\test\images\approved\18.png
D:\Newfolder\test\images\approved\19.png
D:\Newfolder\test\images\approved\20.png

我希望它被縮短,所以它只會從圖像文件夾開始顯示;

images\approved\11.png
images\approved\12.png
images\approved\13.png
images\approved\14.png
images\approved\15.png
images\approved\16.png
images\approved\17.png
images\approved\18.png
images\approved\19.png
images\approved\20.png

有可能嗎? 如果不是,有沒有辦法通過從生成的文本文件中刪除前幾個文件夾來編輯目錄?

說我把dir /b/s *.png > path.txt由於列表沒有空格,我該如何編輯文本。

我還是個新手,所以我對很多命令不太熟悉,但這是我的理解所能做到的。

假設您的問題中有此評論:

“我希望它被縮短,所以它只會從“圖像”文件夾開始顯示;

您總是希望從圖像文件夾中獲取,並且還假設圖像文件夾始終存在於路徑中:

@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"傳遞

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM