Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Funkcje tekstowe
Mirek




Typ: neutral
Postów: 5
Zarejestrowany: Oct 2003
Funkcje tekstowe

Czy może komuś wiadomo, jak rozwiązać następujący problem:
Jest scieżka np: C:\Moje dokumenty\Moja Muzyka\
Jak zastosować funkcje tekstowe aby wszystkie foldery bądź pliki na ścieżce zapisane w kilku wyrazach a więc ze spacją można zapisać
C:\"Moje dokumenty"\"Moja Muzyka"\
Dzisiaj już wiem, ze można zastosować funkcję replace do znalezienia spacji, ale co dalej?

31-10-2003 11:34
Pokaż profil Mirek  Wyślij email do Mirek   
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003

Nie wiem co prawda w jakim celu ma to Ci służyć, ale myślę, że nie musisz aż tak bardzo kombinować.
Wystarczy moim zdaniem, że ścieżkę dostępu do pliku lub katalogu zapiszesz tak:
"C:\Moje dokumenty\Moja muzyka".
Każesz w ten sposób traktować ścieżkę jako jedną całość.
Np.:
Dim strPath as String

On Error Resume Next
strPath = InputBox("Podaj ścieżkę","Podaj ścieżkę", "C:\Moje dokumenty\Moja muzyka"

If Not IsEmpty(strPath) Then
  strPath = """" & strPath & """"
  MsgBox strPath, vbInformation, "Twoja ścieżka"
End If

Gdybyś jednak uparł się na branie w cudzysłowy poszczególne części ścieżki, to musiałbyś wyszukiwać za pomocą funkcji InStr() pozycji każdego "\" i budować drugi ciąg znaków na przykład w następujący sposób:
Sub KonwertujSciezke()
Dim poz As Long, oldpoz As Long
Dim strPath As String
Dim newPath As String

strPath = "C:\Moje dokumenty\Moja Muzyka"

Do
    oldpoz = poz
    poz = InStr(poz + 1, strPath, "\"
    If oldpoz = 0 And poz > 0 Then 'pierwszy znak \, wiec skopiuj litere dysku
        newPath = newPath & Mid(strPath, oldpoz + 1, poz - oldpoz)
    End If
    If oldpoz > 0 And poz > 0 Then 'kolejny znak \, wiec ujmij sciezke w cudzyslowy
        newPath = newPath & """" & Mid(strPath, oldpoz + 1, poz - oldpoz - 1) & """\"""
    End If
    If oldpoz > 0 And poz = 0 Then 'koniec sciezki
        newPath = newPath & Mid(strPath, oldpoz + 1, Len(strPath) - oldpoz) & """"
    End If
Loop Until poz = 0

MsgBox newPath, vbInformation, "Nowa ścieżka"

End Sub


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

01-11-2003 13:15
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
Mirek




Typ: neutral
Postów: 5
Zarejestrowany: Oct 2003
Funkcje tekstowe - problemy

Bardzo dziękuję za tak wyczerpującą odpowiedź.

Pracuję nad programem, który pomoże mi w codziennej pracy w szkolnej pracowni. Chodzi o kopiowanie całych zbiorów w sieci. Pisało już kilka osób o tym, jednak zabrakło szczegółów, które pragnę rozwiązać. Chodzi głównie o kopiowanie całych zbiorów wraz z ich zawartością. Okazuje się, że nie zawsze to co w sieci pod WinXP chodzi prawidłowo w NT. Moje główne problemy z tym związane to:

-zapis scieżki do kopiowania wraz z całą zawartością
np. xcopy "e:\Moja Muzyka\Moje obrazy" \\kom1\d\123\ /s/c/h/e/r/k
powoduje kopiowanie tylko folderu znajdującego się w Moje obrazy to co jest w Moja Muzyka jest pomijane. Operacje te postanowiłem wykonać za pomocą plików wsadowych. Możliwe, że jest jeszcze inna droga np. przez API?

-drugi poważny problem to brak plików otoczenia sieciowego w formatce List. Dotyczy to tylko folderów o nazwach powyżej 8 znaków. W XP widać w NT nie.

Pozdrawiam

04-11-2003 09:29
Pokaż profil Mirek  Wyślij email do Mirek   
losmac
"profesorek"




Typ: neutral
Postów: 758
Zarejestrowany: May 2003
eksperyment

xcopy "e:\Moja Muzyka\Moje obrazy" \\kom1\d\123\ /s/c/h/e/r/k
Powyższy zapis powoduje skopiowanie wyłącznie katalogu "Moje obrazy", aby skopiować "Moja Muzyka\Moje Obrazy", trzeba zapisać to następująco:
xcopy "e:\Moja Muzyka" \\kom1\d\123\ /s/c/h/e/r/k , czyli wskazać katalog nadrzędny a w poleceniu xcopy wstawić opcję, by kopiował wraz z podkatalogami (nie pamiętam przełącznika i leniwię się go sprawdzić ).

W WinXP i WinNT będą istniały różnice, w zależności od... wielu czynników. Podstawową różnicą jest to, że XP jest inaczej zbudowny od NT.
Mogą też wystepować różnice między rozszerzeniami w wiersza poleceń.

Propozycja:
Utwórz plik ListaKompow.txt, a w nim umieść listę komputerów wraz ze ścieżką docelową kopiowania, np.:

\\komp1\abc
\\komp2\abc
\\komp3\abc
\\komp14\def
\\komp111\agr


Utwórz plik kopiujSeryjnie.bat i wpisz w nim nastepujace instrukcje:

@echo off
@for /f %%i in (D:\ListaKompow.txt) do xcopy %~s1 %%i\
pause


1 - to parametr 1 na liście wejściowej, a w tym przypadku nazwa przeciągniętego i upuszczonego na pliku kopiujSeryjnie.bat katalogu
(DLA INFORMACJI: 0 - to parametr 0 na liście wejściowej i jest to nazwa tego pliku)
i - zmienna do przechowywania nazwy komputera wraz ze ścieżką docelową
inne przełączniki ~s, czytaj opis polecenia for
Dopisz swoje przełączniki i zamień na własne ścieżki źródłowe i docelowe.

Co do drugiego problemu to... jak znajdę chwilę czasu to spróbuję rozwiązać ten problem.


_____________________________________________
POSTULATY STARUSZKA:
1) Ludzie, dbajcie o polszczyznę!!!
2) Ludzie, zadawajcie kompletne pytania, a nie rzucacie ochłapy i trzeba się domyślać o co chodzi!!!

Powodzenia
Maciej Łoś

04-11-2003 18:05
Pokaż profil losmac  Wyślij email do losmac   Odwiedź stronę losmac  
Mirek




Typ: neutral
Postów: 5
Zarejestrowany: Oct 2003
Inna droga

Dzięki za wskazówki, są bardzo cenne. Niestety nieco wcześniej poszedłem inną drogą. Zapis stacji jest w VB i dowolnie zmieniany w programie (plik dane.txt). Kopiowanie odbywa się za pomocą pliku wsadowego, nad którym popracuje według Twoich zaleceń. Otoczenie sieciowe opisywał i prezentował w programie LAN - Jelcyn. Niestety nie udało mi się otrzymać jednoznacznej odpowiedzi dlaczego nie widać w NT plików w folderach powyżej 8 znaków. Szukam w dalszym ciągu odpowiedzi na ten problem. Dam znać jak coś się wyjaśni.
Pozdrawiam Mirosław Bałazy

07-11-2003 11:26
Pokaż profil Mirek  Wyślij email do Mirek   
Wszystkich odpowiedzi: 4 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1