2015-09-25 65 views
-2

中的所有文件我在D:\drive的4個不同子文件夾中有4個文件,名稱分別爲cp1_26_09_2015.txt,cp1_22_02_2015,cp1_28_09_2015等。使用FOR命令列出目錄

我想在我使用FOR命令列出目錄和子目錄中的所有文件時逐個搜索文件。

然後它列出了4個不同文件夾中的這個文本文件的4個名字,但我希望逐一提取路徑,以便我可以在每個文件上逐一執行操作。所以,到現在爲止我已經建造這樣的:

SETLOCAL ENABLEDELAYEDEXPANSION 
setlocal 
SET /A MAXJ=1 
SET /A J=1 

set _T1=%date:.=% 
set _year=%_T1:~-4,4% 
set _month=%_T1:~-10,2% 
set _day=%_T1:~-7,2% 
cp1_26_09_2015.txt 
set _prefix=cp1 
PAUSE 
FOR /F "usebackq tokens=*" %%i IN (`DIR /S /B D:\cp1*.txt`) DO (IF NOT "%%~nxi"==**%_prefix%_%_year%_%_month%_%_day%.txt** (
    SET XCOUNT_!J!=%%~i 
    SET MAXJ=!J! 
    SET /A J+=1 
) 
) 
SET XCOUNT 

SET /A J-=1 
@echo COUNT OF FILES IS : %J% 
PAUSE 

現在,這裏的問題是,當我試圖在那裏的擴展名日期變量%_month%%_year%提供刪除今天的日期文件與文件名cp1_28_09_2015.txt搜索和%_day%這不起作用,報告語法錯誤。

+1

那麼有什麼問題?而不是回聲,做你的操作。 –

+0

我想一個接一個的路徑 –

+0

現在我得到 –

回答

1

做一個BAT文件,並嘗試這樣的:

@echo off 
    FOR /R "D:\" %%i in (*_26_09_2015.txt) do call:test %%i 
    echo Done ! 
    exit/b 

    :test 
    echo working on : %1 
    echo Do what you want with %1 

新的編輯:

試試這個:

@echo off 

set "_year=%date:~6,4%" 
set "_month=%date:~3,2%" 
set "_day=%date:~0,2%" 
set "_prefix=cp1" 

For /f "tokens=*" %%i IN ('DIR /S /B cp1*.txt') do (
    If /i not "%%~nxi"=="%_prefix%_%_day%_%_month%_%_year%.txt" (
    call:next "%%~nxi") 
) 

exit/b 

:next 
echo make something with : %1 
echo who don't have the today date 
pause 
+0

'in'和'('...之間有一個空格丟失...... – aschipfl

+0

複製粘貼..謝謝@foxidrive的更正 – SachaDee

+0

請刪除代碼中的cp1_26_09_2015.txt並忽略代碼段中我編輯此問題並提供代碼 –

0

如果你想讓它搜索單個文件,然後像這樣做一個文件listtest.cmd:

@echo off 
set testparams=%1 
echo Listing files with name %1. 
echo ==== 
FOR /R "D:\" %%i in (*_26_09_2015.txt) do call :filetest %%i 
echo ==== 
echo Done. 
exit /b 
:filetest 
if %1 == %testparams% echo %1 

然後使用以下語法從命令行運行它;

listtest <filesearch> 

其中filesearch是您希望它找到的文件。

如果您不知道如何製作CMD文件並從命令行運行它們,請評論此答案。

+1

'in'和'('... – aschipfl

+0

謝謝@foxidrive! – Gustavo6046