Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Поиск 1ой папки и записать ее в переменную (http://forum.oszone.net/showthread.php?t=322374)

Andreyk1s 06-01-2017 16:52 2701277

Поиск 1ой папки и записать ее в переменную
 
Подскажите пожалуйста батник в котором, можно найти папки на диске и записать его в переменную. Папки могут находится в разных произвольных подкаталогах, известно только название папки. Нашел только такой вариант, но мне нужно что бы после первой папки поиск остановился (т.к. Папка только одна, а поиск идет долговато). Заранее спасибо!

for /f "tokens=1 delims=" %%D in ('dir /ad /b /s "ПАПКА"') do cd "%%D"

megaloman 06-01-2017 19:43 2701325

В переменную %Papka%
Код:

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

Цитата:

Цитата Andreyk1s
...файл только один, а поиск идет долговато...

Так файл или все же папка? В любом случае скорость работы команды 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. А если еще кэшировать данные, то поиск покажется вовсе незатратным по времени.


Время: 00:43.

Время: 00:43.
© OSzone.net 2001-