Показать полную графическую версию : Поиск 1ой папки и записать ее в переменную
Andreyk1s
06-01-2017, 16:52
Подскажите пожалуйста батник в котором, можно найти папки на диске и записать его в переменную. Папки могут находится в разных произвольных подкаталогах, известно только название папки. Нашел только такой вариант, но мне нужно что бы после первой папки поиск остановился (т.к. Папка только одна, а поиск идет долговато). Заранее спасибо!
for /f "tokens=1 delims=" %%D in ('dir /ad /b /s "ПАПКА"') do cd "%%D"
megaloman
06-01-2017, 19:43
@echo off
cls
Set "DiskName=D:"
Set "DirName=Моя папка"
for /f "usebackq delims=" %%p in (`Dir "%DiskName%\%DirName%" /S /B /A:D 2^>nul`) Do Set "Papka=%%p" & GoTo :Continue
Echo Disk="%DiskName%" Dir="%DirName%" not found
pause
GoTo :Eof
:Continue
Echo "%Papka%"
pause
greg zakharov
06-01-2017, 23:31
...файл только один, а поиск идет долговато...Так файл или все же папка? В любом случае скорость работы команды dir (ровно как и подобных ей, то есть тех, что используют такие апишные функции Find[First|Next]File) зависит от таких факторов, как уровень фрагментации жесткого диска, а также характеристик процессора. Однако, robocopy работает все же на порядок быстрее, например:
@echo off
setlocal
set "drive=C:\"
set "regex=dir_name\\$"
for /f "tokens=*" %%i in (
'robocopy %drive% . $ /l /njs /njh /nfl /ns^
/nc /xj /s /xd recycle* "system vol*"^
^|findstr /irec:"%regex%"'
) do if not defined dir set "dir=%%i"&goto:next
:next
echo %dir%
endlocal
exit /b
Отрабатает быстрее, нежели то же, но через dir. А если еще кэшировать данные, то поиск покажется вовсе незатратным по времени.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.