2014-02-06 74 views
0

我試圖編寫一個批處理文件來計算當前目錄中有多少個文件和多少個目錄。計算某個目錄內的文件和文件夾

for /r %%i in (dir) do (
    if exist %%i\* (
     set /a directories=directories+1 
    ) else (
     set /a files=files+1 
    ) 
) 
echo directories 
echo files 

這是一個目錄的,我嘗試運行這個批處理文件結構:

---directory 
    ---file1 
---file2 

而且這始終返回「2個文件」和「0目錄」。

+0

你想包含子目錄中的文件和direcotries? – Monacraft

回答

0

試試這個:

@echo off 
set total=0 
set dir=0 
set files=0 
for /f %a in ('dir /b') do (set /a total+=1) 
for /f %a in ('dir /b /a:d') do (set /a dir+=1) 
set /a files=%total%-%dir% 

Echo There are %dir% direcotries and %files% files in the current directory alone 

這將不計算子目錄,以及,你會用for /rfor /r /d

希望這對蒙娜有所幫助。

0

for /r將遞歸搜索目錄(默認情況下它將搜索當前目錄) - *將返回目錄樹中的所有文件,.將返回樹中的所有目錄。

@echo off 

set files= 
set directories= 

for /r %%a in (*) do set /a files+=1 
for /r %%b in (.) do set /a directories+=1 

echo files:  %files% 
echo directories: %directories% 

看看for命令幫助頁面 -

h:\>for /? 

FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters] 

    Walks the directory tree rooted at [drive:]path, executing the FOR 
    statement in each directory of the tree. If no directory 
    specification is specified after /R then the current directory is 
    assumed. If set is just a single period (.) character then it 
    will just enumerate the directory tree. 
+0

我不確定他是否想要子文件夾中的目錄,因爲他已經避免提及它。 – Monacraft

+0

@Monacraft,我以爲他確實想要子目錄,因爲他正在收集'子文件'(想不到更好的單詞)。 – unclemeat

相關問題