PDA

Показать полную графическую версию : [решено] Получить путь из папки


Страниц : [1] 2

Darkar25
30-10-2018, 15:15
Желательно на CMD но также принимаю варианты на VBS...
Как можно получить путь к папке в которой сейчас находится пользователь?и возможно ли это вообще?
К примеру батник каждую секунду чекает все процессы открытой папки и если путь папки соотвествует нужному то выводить True, иначе False...заранее спасибо за ответ..
UPD:Вот рабочий ответ если кому нужно
Option Explicit

Dim objWebBrowser

For Each objWebBrowser In WScript.CreateObject("Shell.Application").Windows
If InStr(1, TypeName(objWebBrowser.Document), "ShellFolderViewDual", vbTextCompare) > 0 Then
WScript.Echo objWebBrowser.Document.Folder.self.Path
End If
Next

WScript.Quit 0
Тема закрыта

Казбек
30-10-2018, 16:49
Darkar25,

Конечную цель - в студию. А то чую, что опять вместо того, чтобы обрыв обогнуть, мы выбираем трудный путь...

Darkar25
30-10-2018, 17:40
Извиняюсь за столь долгий ответ...конечная цель...ну скажу то что я хочу вообщем...чтото типо квеста по всему пк...юзеру дается название папки и он должен найти её на своём пк и зайти в неё после чего ему дается следующая папка и так пока не дойдет до конца...там уже будет чтото типо приза...
UPD:если все еще непонятно то:
В консоль выводится имя папки...юзер ищет её на своём пк и открывает...батник чекает путь открытой папки и сверяет его с нужным путём...если они совпадают то в консоль выводится следующее название...и так далее...

alpap
30-10-2018, 17:56
если на моем компьютере поискать папку с именем "papka", то приза мне не видать, так как всегда можно сказать: А это не она (понятно, их более 30ти)!
так а к чему задача для юзера сводится - быстрее найти папку или более изощренным способом, про то что каким боком тут название темы я вообще уже молчу.
и так пока не дойдет до конца... »
это на сколько лет-то рассчитано, а мы ему еще сетевых путей под шумок накидаем :)

Iska
30-10-2018, 18:07
Я лично для поиска воспользуюсь where.exe в операционной системе и Alt-F7 в Far Manager'е.

Как можно получить путь к папке в которой сейчас находится пользователь? »
Что значит «в которой сейчас находится пользователь»?

YuS_2
30-10-2018, 19:44
«в которой сейчас находится пользователь»? »
Подозреваю, что так зашифрован текущий каталог :spy: :secret:

Amunrah
30-10-2018, 21:23
Как можно получить путь к папке в которой сейчас находится пользователь?и возможно ли это вообще? »
В принципе чекать открытые папки можно и в CMD, через tasklist например, только в свойствах проводника надо выставить отображение путей в заголовках и запуск окон в отдельном процессе... если я вас правильно понял конечно

alpap
30-10-2018, 22:45
чекать открытые папки можно и в CMD, через tasklist например »
серьезно?!
где же папка: "C:\papka"
154781

Iska
30-10-2018, 23:19
alpap, видимо, имелось в виду нечто наподобие:
C:\Мои проекты\0215\Papka>tasklist.exe /fi "WindowTitle eq C:\Мои проекты\0215\Papka" /fi "ImageName eq explorer.exe"

Имя образа PID Имя сессии № сеанса Память
========================= ======== ================ =========== ============
explorer.exe 6876 Console 1 29,440 КБ

Darkar25
30-10-2018, 23:40
Iska, да,что-то типо того...а это будет работать везде или только там,где включено отображение пути в заголовке?

Iska
31-10-2018, 00:04
или только там,где включено отображение пути в заголовке? »
Не интересовался.

Я же предпочитаю пользовать, например, WSH:
Option Explicit

Dim objWebBrowser

For Each objWebBrowser In WScript.CreateObject("Shell.Application").Windows
If InStr(1, TypeName(objWebBrowser.Document), "ShellFolderViewDual", vbTextCompare) > 0 Then
WScript.Echo objWebBrowser.Document.Folder.self.Path
End If
Next

WScript.Quit 0

Amunrah
31-10-2018, 05:52
alpap,
серьезно?!
где же папка: "C:\papka" »
Рекомендую юзать хелп по командам, обычно там все детально описано :)
in:
tasklist /fi "imagename eq explorer.exe" /v /fo:list

out:
Имя образа: explorer.exe
PID: 1112
Имя сессии: Console
№ сеанса: 1
Память: 60*672 КБ
Состояние: Running
Пользователь: PRO\Amunrah
Время ЦП: 0:00:06
Заголовок окна: C:\Temp <- Вот она
Darkar25,
а это будет работать везде или только там,где включено отображение пути в заголовке? »
Только если включить пути в заголовка и окна в отдельных процессах... хотя можно попробовать подрубить эти опции из батника же путем изменения нужных ключей реестра, но оговорюсь - это надо еще проверить :dont-know

П.С. На мой взгляд вариант, который предложил Iska определенно лучше :up

Darkar25
31-10-2018, 13:38
Iska,я сейчас не за пк...приеду домой,протестирую,и если работает то закрою тему.на первый взгляд ваш вариант может работать...

alpap
31-10-2018, 16:48
Заголовок окна: C:\Temp <- Вот она »
ну а вытащить-то надо постараться еще:

@echo off
for /f "tokens=2*" %%a in ('"tasklist /fi "imagename eq explorer.exe" /v /fo:list"') do set "ph=%%b"
echo %ph%
pause

Amunrah
31-10-2018, 18:42
alpap,
ну а вытащить-то надо постараться еще: »
Можно чуть проще поступить.

@echo off
tasklist /fi "imagename eq explorer.exe" /v 2>nul|findstr /l "C:\Temp">nul
if %errorlevel% EQU 0 echo найдено
pause


Лучше через регулярку конечно, но, думаю, для примера сойдет

alpap
31-10-2018, 18:49
Можно чуть проще поступить »
findstr /l "C:\Temp" »
думаю при известном (заданном) пути я и не стал бы так изгаляться - зачем искать то что имеется?

Amunrah
31-10-2018, 18:53
Цитата Amunrah:
Можно чуть проще поступить »
Цитата Amunrah:
findstr /l "C:\Temp" »
думаю при известном (заданном) пути я и не стал бы так изгаляться - зачем искать то что имеется? »
Но по условию путь известен, батник должен проверять открыт ли заданный каталог... к тому-же, как искать, то что не имеется? ))

alpap
31-10-2018, 19:06
как искать, то что не имеется? »
вариант:
просто открыта последняя среди сотни, какая не помню - нужен срочно путь
ну как я себе представляю и мой код именно и дает путь последней открытой папки

Amunrah
31-10-2018, 19:11
вариант: просто открыта последняя среди сотни, какая не помню - нужен срочно путь
ну как я себе представляю и мой код именно и дает путь последней открытой папки »
Я подразумевал контекст вопроса, а вы решаете задачу, не относящуюся к данной теме... не вижу смысла спорить. Но да, узнать заголовок последнего открытого каталога можно через цикл.

Darkar25
01-11-2018, 04:54
Option Explicit
Dim objWebBrowser
For Each objWebBrowser In WScript.CreateObject("Shell.Application").Windows
If InStr(1, TypeName(objWebBrowser.Document), "ShellFolderViewDual", vbTextCompare) > 0 Then
WScript.Echo objWebBrowser.Document.Folder.self.Path
End If
Next
WScript.Quit 0 »
я извиняюсь за такой тупой вопрос,но...как это юзать?)))я так понимаю нужен файл name.wsh и туда этот скрипт...но мне пишет что сценарий не указан




© OSzone.net 2001-2012