Centrum Skryptóe - Systemy Operacyne

Jak wyodrębnić nazwę użytkownika i nazwę dysku z wartości ciągu?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak wyodrębnić nazwę użytkownika i nazwę dysku z wartości ciągu?

Cześć Skrypciarze! Pytanie

Cześć Skrypciarze! Mam informacje na temat katalogu macierzystego użytkowników przechowane w formacie kenmyer on 'atl-fs-001\vol' (U:). Jak wyodrębnić nazwę użytkownika i literę dysku oraz zmienić format na: U:\kenmyer?

-- AR

Cześć Skrypciarze! Odpowiedź

Cześć, AR. Wiecie zapewne, że Barcelona to jedno z najbardziej ekscytujących i wibrujących życiem miast na świecie, a ponadto ma niezwykłą architekturę; wystarczy wspomnieć tylko miejsca typu opera Gran Teatre del Liceu, Muzeum Picassa; jest światowej sławy drużyna piłkarska FC Barcelona – dwukrotny zwycięzca Ligii Mistrzów. W Barcelonie jest po trosze wszystkiego, od drapaczy chmur (Torre Agbar – tak naprawdę budynek kształtem przypominający ogórek, tyle, że ma okna) po kluby nocne, restauracje i bary tapas. Tyle dobroci w jednym mieście. Niesłychane.

Dziś jest dla nas dzień szczególny, bowiem będąc na forum informatycznym TechEd, mamy wolne aż do późnego popołudnia. To oznacza, że przez cały dzień możemy robić co tylko chcemy w tym dynamicznym mieście. Co będziemy robić? Zajrzymy do średniowiecznej dzielnicy Barri Gòtic? A może pospacerujemy ulicą La Ramola? Ktoś nam polecał muzeum Joana Miró… Mamy czas. Zanim jednak wyruszymy w miasto, zrobimy to, o czym marzy każdy, kto po raz pierwszy przybywa do tego miasta: napiszemy skrypt konwertujący wartość ciągu kenmyer on 'atl-fs-001\vol' (U:) na wartość ciągu U:\kenmyer.

Taki właśnie jak ten oto poniżej:

strValue = "kenmyer on 'atl-fs-001\vol' (U:)"



arrValues = Split(strValue, " ")



strName = arrValues(0)



intDrive = Ubound(arrValues)

strDrive = arrValues(intDrive)

strDrive = Mid(strDrive, 2, 2)



strNewValue = strDrive & "\" & strName

Wscript.Echo strNewValue

OK. O ile dobrze zrozumiałem pytanie AR, mamy do czynienia z wartościami ciągu wyglądającymi następująco:

kenmyer on 'atl-fs-001\vol' (U:)

Naszym zadaniem jest przekonwertowanie tego ciągu, żeby wyglądał jak ten poniżej; z kolei wtedy możliwe będzie przypisanie tej nowej wartości jako katalogu macierzystego użytkownika:

U:\kenmyer

Nie będę się zagłębiał w to, jak przypisać użytkownikowi katalog macierzysty, w końcu jeden z naszych poprzednich artykułów mówi o tym wystarczająco dużo. Jednakże skupię się na tym, żeby zmienić ciąg kenmyer on 'atl-fs-001\vol' (U:) w ciąg U:\kenmyer.

W tym celu najpierw przypisujemy początkowy ciąg do zmiennej o nazwie strValue. Następnie stosujemy poniższy wiersz kodu w celu przekonwertowania (Split) tego ciągu na tablicę określając przy tym, że chcemy utworzyć nowy element tablicy za każdym razem, gdy napotkamy pustą spację („ ”):

arrValues = Split(strValue, " ")

Jaki jest cel tego posunięcia? No cóż, potrzebne nam jest pierwsze „słowo” z tego ciągu; jest to nazwa użytkownika i nazwa, którą nadamy naszemu folderowi. Jak więc odizolować pierwsze słowo z ciągu? Najprostszym sposobem jest rozdzielenie tego ciągu przy użyciu spacji jako delimitera. Dzięki temu otrzymamy tablicę zawierającą następujące elementy:

kenmyer 

on 

'atl-fs-001\vol' 

(U:)

Na dodatek mamy jeszcze jedne bonus: litera dysku (U:) znajduje się teraz w ostatnim elemencie w tablicy. Teraz wystarczy tylko pozbyć się nawiasów i jesteśmy w domu.

W tym celu, najpierw pobieramy wartość pierwszego elementu w tablicy (który zawsze ma numer indeksu 0) i zachowujemy go w zmiennej o nazwie strName. Do tego służy nam poniższy wiersz kodu:

strName = arrValues(0)

Następnym krokiem jest określenie numeru indeksu ostatniego elementu znajdującego się w tablicy; możemy to zrobić za pomocą funkcji Unbound:

intDrive = Ubound(arrValues)

Kiedy już mamy numer indeksu, możemy pobrać wartość ostatniego elementu w tablicy stosując poniższy wiersz kodu:

strDrive = arrValues(intDrive)

Jak już mówiłem, ostatni element ma wartość wyglądającą tak:

(U:)

Jak pozbyć się tych nawiasów? No cóż, zrobimy to, wywołując funkcję Mid i informując ją, że począwszy od pozycji znaku 2 ma pobrać dwa znaki (innymi słowy znak 2 oraz 3) i przypisać je znaki do zmiennej o nazwie strDrive:

strDrive = Mid(strDrive, 2, 2)

Czemu będzie równa strDrive po wykonaniu tej czynności? Jak widać:

U:

Teraz wystarczy tylko połączyć literę dysku, znak “\” oraz nazwę użytkownika i wywołać echo otrzymanego wyniku. To załatwią za nas następujące dwa wiersze kodu:

strNewValue = strDrive & "\" & strName

Wscript.Echo strNewValue

I to wszystko na ten temat. To było o wiele bardziej ekscytujące niż wizyta w parku rozrywki Parc d'Atraccions, nieprawdaż?

To jest ekscytujący dzień nie tylko dla Skrypciarzy przebywających w Barcelonie; jest on także ekscytujący dla wszystkich, którzy odwiedzają Centrum Skryptów. Żeby nikomu nie było przykro, że my się tam tak dobrze bawimy, a tu same skrypty, codziennie w tym tygodniu będziemy udostępniać nowe artykuły i pliki do pobrania. Na początek: kilka artykułów na temat powłoki Windows PowerShell 2.0 (j.ang.), w tym zaktualizowana wersja graficznego pliku pomocy powłoki Windows PowerShell. Czy to nie jest równie fajne, jak zwiedzanie pałacu Palau Güell? Cóż, może i nie. Ale niewiele brakuje.

Wybaczcie, że ten dzisiejszy artykuł jest taki krótki, ale sami rozumiecie. Jestem w Barcelonie. Muszę maksymalnie wykorzystać ten czas. W końcu mam wiele skryptów do napisania!

 Do początku strony Do początku strony

Centrum Skryptóe - Systemy Operacyne