2015-05-11 78 views
0

我想生成一個包含給定目錄的目錄結構的文件作爲相對路徑。目前,我有以下批處理文件:使用相對路徑顯示目錄結構

@echo off 
pushd "C:\TEST" 
dir /AD /B /ON /S 
popd 

其電流輸出是這樣的:

C:\TEST\one 
C:\TEST\three 
C:\TEST\two 
C:\TEST\one\a 
C:\TEST\three\d 
C:\TEST\three\e 
C:\TEST\three\f 
C:\TEST\two\b 
C:\TEST\two\c 

我所要的輸出是:

one 
three 
two 
one\a 
three\d 
three\e 
three\f 
two\b 
two\c 

編輯:這個問題是不是重複。另一個問題只顯示文件,現在我需要獨佔目錄(不與文件混合)。

+1

可能重複的[枚舉目錄中的文件的相對路徑](http://stackoverflow.com/questions/30150896/enumerate-relative-path-to-files-in-a-directory) – rojo

+0

同樣的問題從同一個用戶。 – NinjaCat

+0

不是重複的,因爲這次我需要目錄結構,而不是顯示文件。 – Log

回答

1
@echo OFF 
SETLOCAL enabledelayedexpansion 
SET "targetdir=c:\106x" 
pushd "%targetdir%" 
FOR /f "delims=" %%a IN ('dir /AD /B /ON /S') DO (SET "dirname=%%a"&ECHO(!dirname:%targetdir%\=!) 
popd 
GOTO :EOF 

這應該爲你工作所提供的目錄名不包含!

的數據夾應用於%%a並轉移到dirname進行操縱。目標目錄名稱+關閉\然後替換爲沒有用於顯示。

+0

感謝您的答案,但我仍然有問題。爲了我的目的,我需要在生成的相對路徑周圍添加文本。我嘗試修改DO部分,因此:'DO(SET「dirname = %% a」&ECHO rmdir「!dirname:%targetdir%\ =!」)'但在結束引號前添加一個空格。 – Log

+0

完美地爲我工作,使用您的評論中發佈的「do」。如果你所做的只是一個'rmdir',爲什麼不使用'%% a'中的完整目錄名呢? – Magoo

+0

謝謝!我的錯誤:在我的真實腳本中,我通過在'&'字符周圍添加了額外的空格來「美化」了代碼。至於你的問題,我沒有真正使用_Command Prompt_中的'rmdir',而是使用特殊腳本中的另一種'RMDir'。 – Log

相關問題