2014-09-26 99 views
0

我有一個批處理文件來計算文件夾中特定文件的數量。內容給出如下:無法在批處理文件中顯示變量的值

set xx = %DATE:~10,4%%DATE:~4,2%%DATE:~7,2% 
set count=dir C:\Archive\*%xx%.csv | find "File(s)" 
echo %count% 

但最後命令顯示的輸出

echo 
ECHO is on 

什麼我錯在這裏幹什麼?任何人都可以幫忙嗎?

回答

2

要執行命令的檢索它的輸出你需要的for /f命令(見for /?幫助)

set "xx=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%" 
for /f %%a in ('dir /a-d /b "c:\Archive\*%xx%.csv" ^| find /c /v ""') do set "count=%%a" 
echo %count% 

這將在列表中所需的文件執行dir命令沒有文件夾包含在裸格式(沒有標題,摘要和沒有附加文件信息),而不是搜索File(s)(在不同的窗口語言環境中文本不同),它使用find來計數(/c)非空行數(/v "")。輸出是一個數字,存儲在for可替換參數%%a中,然後複製到所需變量

+0

非常感謝。這在Windows 7上工作。但是,當我在Windows服務器上嘗試相同時,它會拋出一個錯誤,如'find'不被識別爲內部或外部命令 – user1407668 2014-09-26 10:04:37

+1

@ user1407668,'find.exe'是來自MS-DOS的標準元素倍。嘗試用'find.exe'或''%systemroot%\ system32 \ find.exe「替換對'find'的調用,以防路徑未正確設置 – 2014-09-26 10:23:10

相關問題