Рекурсивная печать папок и файлов с помощью Windows Batch
Возможный дубликат:
Пакет Windows (файлы)
Привет. Я пытаюсь сделать пакетный скрипт, который печатает для каждого имени файла из командной строки все подпапки папки, где находится файл (у меня есть в качестве параметров папка и список имен файлов). Имена подпапок должны быть отсортированы в порядке убывания размеров файлов (файл может иметь разные размеры в разных подпапках). Я не могу найти скрипт, который печатает пути. Кто-нибудь может помочь?
@echo off
REM check the numbers of parameters
if "%2"=="" goto err1
REM check: is first parameter a directory?
if NOT EXIST %1\NUL goto err2
set d=%1
shift
REM iterate the rest of the parametersa
for %%i in %dir% (
find %dir /name %i > temp
if EXIST du /b temp | cut /f 1 goto err3
myvar=TYPE temp
echo "file " %i "is in: "
for %%j in %myvar do
echo %j
echo after sort
du /b %myvar | sort /nr
)
:err1
echo Two parameters are necessary
goto end
:err2
echo First parameter must be a directory.
:err3
echo file does not exist.
:end
1 ответ
Вот сценарий, который делает то, что вы хотите, извините за долгую задержку.
@echo off
REM application logic. askForDir. [askForFile => findFile]{infinity}
:askForDir
cls
set basePath=
echo Not supplying a directory will exit. Trailing slash please
set /p basePath=Search in directory:
if x%basePath%==x goto endApp
REM Gets a file name, sets the curDir
:askForFile
cls
set fileName=
echo Currently searching in: '%basePath%'
echo Not supplying a filename will return you to directory selection
set /p fileName=Search for file:
if x%fileName%==x goto askForDir
REM We know what we're searching for and where
set file=%basePath%%fileName%
if exist %file% (
echo %file%
)
REM check recursively for the fileName in each subfolder
FOR /R %basePath% %%f IN (%fileName%) DO (
echo %%f
)
REM Finished dir and all subs, askForFile again
echo Done.
pause>nul
goto askForFile
REM Finished
:endApp
cls
echo We hope you enjoyed this presentation.
pause>nul
Хотя, как отметил Джеб, я бы порекомендовал изучить некоторые основы, учитывая, что это домашнее задание, но оно не сильно вам поможет, если вы на самом деле не научитесь делать это. Попытался прокомментировать мой код настолько, чтобы вы могли его понять, но попробуйте прочитать больше об использовании командных файлов.