2009-06-08 58 views
0

我的目錄結構:如何使文件,列出使用的.bat腳本

pakages 
|-files.bat 
|-component 
    |-source 
    |-lib 

我需要使用帶有文件files.bat腳本上市這樣做文本文件:

File0001=source\WindowT.pas 
File0002=source\AWindowT.pas 
File0003=source\AWindowSplash.pas 
File0004=source\InternalT.pas 
File0005=source\ImageLister.pas 
File0006=lib\LIcons.res 
File0007=lib\TstandartBtn_16.RES 
File0008=lib\TstandartBtn_24.RES 

......等

如何製作此類文件列表?

預先感謝您

回答

2

我已經拼湊下面的腳本:

@echo off 
setlocal 
rem The number of the current file, gets incremented 
set FileNumber=1 
rem Move into "component" directory, the following "for" command will 
pushd %~dp0\component 
rem loop over directories there 
for /d %%f in (*) do call :process "%%f" 
rem move into the previous directory again 
popd 
endlocal 
goto :eof 

:process 
rem process files 
for /f %%x in ('dir /b /a:-d %1 2^>nul') do call :process_files %~1 %%x 
rem go down recursively, if there are more subdirectories 
for /f %%d in ('dir /b /a:+d %1 2^>nul') do call :process %%d 
goto :eof 

:process_files 
call :leadingzeros %FileNumber% 
rem Output line 
echo File%RESULT%=%~1\%2 
set /a FileNumber+=1 
goto :eof 

rem Parameter: a non-negative number <= 9999 
rem Result: a string with zero padding at the start 
:leadingzeros 
if %1 LSS 10 set RESULT=000%1&goto :eof 
if %1 LSS 100 set RESULT=00%1&goto :eof 
if %1 LSS 1000 set RESULT=0%1&goto :eof 
set RESULT=%1 
goto :eof 

可能不完全是你所需要的,而應該提供一個起點。然而,輸出是相同的。對於以下的文件/目錄樹:

 
    packages 
    │ files.cmd 
    │ 
    └───component 
     ├───lib 
     │  LIcons.res 
     │  TstandardBtn_16.RES 
     │  TstandardBtn_24.RES 
     │ 
     └───source 
       AWindowSplash.pas 
       AWindowT.pas 
       ImageLister.pas 
       InternalT.pas 
       WindowT.pas

運行批處理會產生以下輸出:

File0001=lib\LIcons.res 
File0002=lib\TstandardBtn_16.RES 
File0003=lib\TstandardBtn_24.RES 
File0004=source\AWindowSplash.pas 
File0005=source\AWindowT.pas 
File0006=source\ImageLister.pas 
File0007=source\InternalT.pas 
File0008=source\WindowT.pas 
+0

非常感謝!這正是我想要的。 – phpcoder 2009-06-08 14:09:34

+0

也許你應該回答這個問題;) – Oorang 2009-06-11 06:29:48

0
dir /A:-D /B /S>out.txt 

那得到的你最你想要什麼。

+0

謝謝,但我需要循環的字符串File0001,File0002等的生成和我也需要相對文件路徑 dir/A:-D/B /S>out.txt顯示完整路徑 – phpcoder 2009-06-08 11:20:45

0

開始沿着線的東西:

@echo off 

call :dodir . 
goto eof 

:dodir 
set TEMP_CUR_DIR="%*" 
REM echo Directory %TEMP_CUR_DIR%: 
for %%f in (%TEMP_CUR_DIR%\*) do call :dofile %%f 
for /d %%d in (%TEMP_CUR_DIR%\*) do call :dodir %%d 
goto eof 

:dofile 
set TEMP_CUR_FILE="%*" 
echo File: %TEMP_CUR_FILE% 
goto eof 

:eof 
相關問題