Каким способом можно указать путь к папке на один уровень выше, если название папки неизвестно?



  • Вот к примеру:
    C:\Users\Олег\Desktop
    Мне нужно указать папку "Олег", но я не знаю, как ее зовут, она по разному может называться



  • @olegtut штатными средствами вроде как нельзя. Но можно подойти иначе к задаче:
    Сперва указать папку C:\Users\ , указать только " Искать Папки " при поиске.
    дальше в список мы допустим получили
    C:\Users\Олег
    C:\Users\евнван
    C:\Users\ваовыло
    (только слеши будут правые, как и положено, это просто в windows они левые )

    Дальше ты знаешь, что внутри среди этих трех папок есть точно папка Desktop
    Тебе осталось узнать, в какой именно папке она лежит. Остается только перебрать в цикле этот список , получить опять папки и проверить есть ли там папка Desktop
    Если есть, значит мы нашли нужную папку и получили полный путь, а дальше можно уже получать список файлов и узнавать их к-во.

    Если ничего не понял, могу сделать пример.



  • This post is deleted!


  • @out По логике все изложено ясно, но визуально трудно представляется. От примера бы не отказался :) Так, например, в PHP можно указать так :
    ../ Это означает, что папка находится на уровень выше. Хорошо бы запилить подобную функцию в BAS((
    reply



  • @olegtut как-то так: 0_1480729100577_cntFiles.xml

    оно само найдет путь где лежит папка Desktop, нужно только указать начальный путь c:\Users

    на счет .. , то это значит подняться на 1 уровень вверх, ../.. на два. В БАС при указании пути это тоже работает (проверил ..), но это не для твоего случая.


    В этом примере все работает, но тут вопрос к @support там выход из цикла не прерывает все уровни циклов, раньше можно было указать break 3; Сейчас вроде как нет возможности указывать глубину, думаю это сделано для простоты понимания нам, но вроде как не выходит сейчас из всех циклов, а только из текущего. А раз убрали возможность указывать глубину, то нужно, чтобы break выходил из всех циклов.


  • administrators

    @olegtut
    Еще можно вызвать действие " Информация О Файле/Папке", тогда в переменной FILEINFO_BASE_DIRECTORY будет C:\Users\Олег



  • @support не понял, а какой путь нужно указать, чтобы получить C:\Users\Олег )?
    если путь пока не известный.

    или я не внимательно вчитался в суть проблемы или ты )
    C:\Users\Олег\Desktop
    он не знает эту часть \Олег\ она может быть разной, он только знает эту часть C:\Users*\Desktop
    это на сколько я понял, и под это сделан пример.


  • administrators

    @out Ну насколько я понял на входе есть

    C:\Users\Олег\Desktop
    на выходе должно быть C:\Users\Олег



  • @support на входе C:\Users\не_знает_название_этой_папки\Desktop
    на выходе C:\Users\Олег\Desktop

    зы: или же мне пора спать )


  • administrators

    @out А, тогда да, лучше как ты написал.



  • @support посмотри как будет время break; http://community.bablosoft.com/post/4139
    что-то он иногда не так срабатывает..
    правда, у меня версия БАС 15,9,0 После этой уже было 2 обновы.


  • administrators

    @out Break может не срабатывать если было перемещение точки выполнения во время цикла.



  • @support да, это я замечал, по этому перепроверял, без "ручного вмешательства". Но щас еще запущу.



  • @support попробуй запусти http://community.bablosoft.com/uploads/files/1480712341556-cntfiles.xml в отладке пошагово, просто нажми next step 10 раз, заметишь, что break вышел только из текущего цикла, но не из внешнего, и дальше опять входит во вложенный цикл.


  • administrators

    @out Да, так и должно быть. Чтобы выйти из внешнего цикла нужно создать переменную и делать break из каждого цикла.



  • @support ээ так не кошерно ) верни как было, break N , чтобы можно было указывать вложенность.
    ну или как в JS, можно создавать метку перед циклом, дальше указываешь break МЕТКА; и мы выйдем к нужной метке (с нужного цикла). Это удобно, нужно на практике. (об этом я https://learn.javascript.ru/while-for#метки-для-break-continue)


  • administrators

    @out Пока можно выполнять код _break(n)


  • administrators

    @out Label тоже можно поставить, но не в действиях
    0_1480726360862_breaklabel.xml

    0_1480726403925_BreakLabel.png



  • @support ох скорее бы получить документацию по всем существующим методам в БАС, но я знаю, как программисты не любят писать ридми,мануалы,документации ))



  • Спасибо обоим за ответ. Разобрался! Что б я без вас делал :)


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.