[решено] Узнать имя подпапки

Ответить
Аватара пользователя
tehnik_srs

[решено] Узнать имя подпапки

Сообщение tehnik_srs »

Добрый день!

Есть проблема: на 30 компах есть папка вида "D:\WORK\%UserName%"

%UserName%" - у каждого пользователя разная, подскажите, пожалуйста, как узнать имя этой папки.
Аватара пользователя
kaster

Re: [решено] Узнать имя подпапки

Сообщение kaster »

Имя этой папки равно



Код:

Код: Выделить всё

$sPath = 'D:\Work\' & @UserName
Аватара пользователя
tehnik_srs

Re: [решено] Узнать имя подпапки

Сообщение tehnik_srs »

К сожалению, нет. @UserName и %UserName% не совпадают
Аватара пользователя
kaster

Re: [решено] Узнать имя подпапки

Сообщение kaster »

очень странно, т.к. у меня совпадает.

ну тогда попробуй так



Код:

Код: Выделить всё

#include 
$pid = Run(@ComSpec & ' /c echo %username%', '', @SW_HIDE, 0x1 + 0x2)
$sUserName = ''
While 1
	$tmp = StdoutRead($pid)
	$err = @error
	If StringLen($tmp) > 0 Then $sUserName &= $tmp
	If $err Then ExitLoop
Wend
$sUserName = _Encoding_OEM2ANSI($sUserName)
$sUserName = StringReplace($sUserName, @CR, '')
$sUserName = StringReplace($sUserName, @LF, '')
$sPath = 'D:\Work\' & $sUserName
ConsoleWrite($sPath & @CRLF)

Библиотеку брать тут -
Encoding UDF - Библиотека для работы с кодировками строк
Аватара пользователя
tehnik_srs

Re: [решено] Узнать имя подпапки

Сообщение tehnik_srs »

Хм, дело в том, что эту папку создает сам пользователь и называет ее как захочет, например:

@UserName = "Бухгалтер"

а папка называется:

"D:\WORK\Тетя Клава"
Аватара пользователя
kaster

Re: [решено] Узнать имя подпапки

Сообщение kaster »

tehnik_srs, в таком случае рекомендую тебе изучить что такое переменные окружения, которое ты пытался использовать в первом посте.

если переменная задана в системе как %Username% то при вызове через echo система покажет его значение. а то что ты пытаешься сделать, это определить какую же папку создал пользователь. ИМХО, это нереально. по какому критерию ты пытаешься это сделать? или же в папке 'D:\Work' находится всего одна папка?
Аватара пользователя
266903582

Re: [решено] Узнать имя подпапки

Сообщение 266903582 »

tehnik_srs, вот способ узнать первую подпапку в указанной папке:



Код:

Код: Выделить всё

$tmp=""
$vvar=FileFindFirstFile("d:\work\*")
While 1
	$tmp=FileFindNextFile($vvar)
	if StringLeft(StringRight($tmp,4),1)"." And StringLeft(StringRight($tmp,5),1)"." And $tmp"" Then ExitLoop
WEnd
ConsoleWrite($tmp&@cr)
Аватара пользователя
tehnik_srs

Re: [решено] Узнать имя подпапки

Сообщение tehnik_srs »

Почему-то не работает
Аватара пользователя
tehnik_srs

Re: [решено] Узнать имя подпапки

Сообщение tehnik_srs »

Все, нашел, если кому-нибудь нужно



Global $Found



FileView("D:\Work", 0)



Func FileView($sPath = @ScriptDir, $Flag = 1)

Local $sRet

Local $Find_First = FileFindFirstFile($sPath & "\*.*")

If @error Then Return



While 1

$FindNext = FileFindNextFile($Find_First)

If @error Then ExitLoop

$Full_File = $sPath &"\"& $FindNext

If StringInStr(FileGetAttrib($Full_File), "D") Then

$Found &= $Full_File

$sRet = FileView($Full_File, $Flag)

ElseIf $Flag Then

$Found &= $Full_File

EndIf

WEnd

FileClose($Find_First)

EndFunc



MsgBox(4096, "", $Found)
Аватара пользователя
266903582

Re: [решено] Узнать имя подпапки

Сообщение 266903582 »

tehnik_srs, удовлетворяющее решение не соответствует заголовку темы.

А результата (список папок) можно добиться проще:



Код:

Код: Выделить всё

$tmp=""
$out=""
$vvar=FileFindFirstFile("d:\work\*")
While 1
	$tmp=FileFindNextFile($vvar)
	if @error Then ExitLoop
	if StringLeft(StringRight($tmp,4),1)"." And StringLeft(StringRight($tmp,5),1)"." And $tmp"" Then $out&=$tmp&@CR
WEnd
;~ ConsoleWrite($out)
MsgBox(0,"Список папок",$out)

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

Вернуться в «AutoIt»