2015-09-25 67 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