2017-03-12 151 views
0

目前我迭代的所有文件夾中,目前我在Sample文件夾,我這樣做是這樣的:迭代文件夾名稱批處理文件

@echo off 

for /R %%a in ("*") do (
@echo %%a 
) 

pause 

並列出這樣的文件:

C:\Users\-----\Desktop\Sample\mybat.bat 
C:\Users\-----\Desktop\Sample\bin\1.dll 
C:\Users\-----\Desktop\Sample\content\themes\2.css 

我想要的是列出名稱,但從當前文件夾開始,我把.bat文件,即。即,它應該是這樣的:

Sample\mybat.bat 
Sample\bin\1.dll 
Sample\content\themes\2.css 
+0

通過從每個開頭刪除%CD%變量來操作循環中返回的每個完整路徑。 – Compo

+0

一個簡單的'dir/B/S/A-D'會給你輸出相同的結果。 Compos的建議將需要字符串替換,並且(代碼塊)也會延遲擴展。 – LotPings

+0

我的錯誤@LotPings然後,我認爲使用**'/ S' **,意味着完整的路徑不是相對的。 – Compo

回答

0

一個很好的方式,從當前目錄返回相對文件的列表是xcopy /L使用:

pushd "%~dp0.." 
xcopy /L /S /I ".\Sample" "%TEMP%" | find ".\" 
popd 

要遍歷所有的回項目,使用這樣的:

pushd "%~dp0.." 
for /F "delims=" %%F in (' 
    xcopy /L /S /I ".\Sample" "%TEMP%" ^| find ".\" 
') do (
    echo(%%F 
) 
popd 

要刪除.\前綴,使用以下命令:

pushd "%~dp0.." 
for /F "tokens=1* delims=\" %%E in (' 
    xcopy /L /S /I ".\Sample" "%TEMP%" ^| find ".\" 
') do (
    echo(%%F 
) 
popd 
相關問題