2

Я запускаю следующую команду,

@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
)

он будет искать файл с именем new.txt на всем диске D: папки и подпапки в качестве конечного результата, он показывает полный путь к этому файлу new.txt в качестве вывода, как показано ниже ( допустим, файл new.txt в D:\folder\ )

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

Но проблема в том, что если на диске new.txt есть несколько файлов с одинаковым именем D: в другой папке или подпапке , он показывает только один путь вывода.

Мне нужно, чтобы все пути с одинаковым именем new.txt на диске D: как показано ниже,

Ожидаемый результат нужен как этот,

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

пожалуйста помогите ..Спасибо заранее.

1 ответ1

1

Я хочу показать путь ко всем файлам с тем же именем new.txt на диске D:

Ожидаемый результат:

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

Используйте следующий пакетный файл:

@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

  • Индекс AZ командной строки Windows CMD
  • Категоризованный список команд Windows CMD
  • del - Удалить один или несколько файлов.
  • dir - Показать список файлов и подпапок.
  • endlocal - завершить локализацию изменений среды в командном файле. Передача переменных из одного пакетного файла в другой.
  • find - поиск текстовой строки в файле и отображение всех строк, где она найдена.
  • set - отображать, устанавливать или удалять переменные окружения CMD. Изменения, сделанные с помощью SET, будут сохраняться только в течение текущего сеанса CMD.
  • setlocal - устанавливает параметры для контроля видимости переменных среды в командном файле.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .