Como procurar e encontrar todos os arquivos com nome específico usando lote?

2

Estou executando o seguinte comando,

@echo off
cls
for /r D:\ %%a in (*) do if "%%~nxa"=="new.txt" set p=%%~dpnxa
if defined p (
echo File found its path - %p%
pause
) else (
echo File not found !
pause
)

ele irá procurar o arquivo chamado new.txt na unidade inteira D: pastas e subpastas como um resultado final, ele mostra o caminho completo do arquivo new.txt como uma saída como abaixo, (vamos assumir new.txt de arquivo em D:\folder\ )

File found and its path - D:\folder\new.txt
Press any key to continue . . . 

Mas o problema é que, se houver vários arquivos com o mesmo nome new.txt na unidade D: na pasta ou na subpasta diferente, ela mostrará apenas uma saída de caminho.

Minha necessidade é mostrar o caminho de todos os arquivos com o mesmo nome new.txt na unidade D: como abaixo da saída,

Saída esperada precisa assim,

Files found : 4
Files Paths : 
1 - D:\folder\new.txt
2 - D:\new folder\new.txt
3 - D:\files\new.txt
4 - D:\folder\new\new.txt

pls help..Thx adiantado.

    
por Philip 29.11.2017 / 09:04

1 resposta

1

Eu quero mostrar todos os arquivos caminho com o mesmo nome new.txt na unidade D:

Expected Output:

Files found : 4
Files Paths : 
1 - D:\folder\new.txt
2 - D:\new folder\new.txt
3 - D:\files\new.txt
4 - D:\folder\new\new.txt

Use o seguinte arquivo em lotes:

@echo off
setlocal
rem change to the correct directory
cd /d d:\
rem count the files
dir /b new.txt /s 2> nul | find "" /v /c > %temp%\count
set /p _count=<%temp%\count
rem cleanup
del %temp%\count
rem output the number of files
echo Files found : %_count%
rem list the files
echo Files Paths :
dir /b new.txt /s
endlocal
por 29.11.2017 / 10:41