[решено] Узнать имя подпапки
-
tehnik_srs
[решено] Узнать имя подпапки
Добрый день!
Есть проблема: на 30 компах есть папка вида "D:\WORK\%UserName%"
%UserName%" - у каждого пользователя разная, подскажите, пожалуйста, как узнать имя этой папки.
Есть проблема: на 30 компах есть папка вида "D:\WORK\%UserName%"
%UserName%" - у каждого пользователя разная, подскажите, пожалуйста, как узнать имя этой папки.
-
tehnik_srs
-
kaster
Re: [решено] Узнать имя подпапки
очень странно, т.к. у меня совпадает.
ну тогда попробуй так
Код:
Библиотеку брать тут -
ну тогда попробуй так
Код:
Код: Выделить всё
#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: [решено] Узнать имя подпапки
Хм, дело в том, что эту папку создает сам пользователь и называет ее как захочет, например:
@UserName = "Бухгалтер"
а папка называется:
"D:\WORK\Тетя Клава"
@UserName = "Бухгалтер"
а папка называется:
"D:\WORK\Тетя Клава"
-
kaster
Re: [решено] Узнать имя подпапки
tehnik_srs, в таком случае рекомендую тебе изучить что такое переменные окружения, которое ты пытался использовать в первом посте.
если переменная задана в системе как %Username% то при вызове через echo система покажет его значение. а то что ты пытаешься сделать, это определить какую же папку создал пользователь. ИМХО, это нереально. по какому критерию ты пытаешься это сделать? или же в папке 'D:\Work' находится всего одна папка?
если переменная задана в системе как %Username% то при вызове через echo система покажет его значение. а то что ты пытаешься сделать, это определить какую же папку создал пользователь. ИМХО, это нереально. по какому критерию ты пытаешься это сделать? или же в папке 'D:\Work' находится всего одна папка?
-
266903582
Re: [решено] Узнать имя подпапки
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: [решено] Узнать имя подпапки
Все, нашел, если кому-нибудь нужно
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)
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: [решено] Узнать имя подпапки
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)Если же нужны папки с файлами, то достаточно убрать фильтрацию имен с расширениями и файлы войдут в список...