Komputery, Windows i masa kompletnego bałaganu. Tak, to mój dziennik.

ktos.jogger


Na przyszłość - ^ w wierszu poleceń

31 marca 2006, 14:40:05. Niewiadomoco , 0.

Zapamiętać na przyszłość:

Wiersz poleceń Windows nie przekazuje jako parametr znaczka "^", tylko jest on pomijany.

Wydało się to, gdy próbowałem wydać mojemu programowi polecenie uruchomienia się z trochę skomplikowanymi parametrami: ktregexplister . [^(exe)(dll)]$ --includesubdirs --stats. A program zamiast wyświetlać wszystko niekończące się na .exe lub .dll pokazywał mi tylko .exe i .dll. A ja się godzinę męczyłem szukając błedu w kodzie. A tu się okazało, że w ogóle ten "^" nie był do regexpa przekazywany...

A teraz pytanie pozostaje - jak to obejść? Bo ja na razie dodałem programowi opcję pobierania regexpa z pliku po prostu i tyle. Co prawda funkcja nieuokumentowana jest, ale co mi tam ;-)

Komentarze

  1. Dot
    31 marca 2006 15:47:27

    Może jakiś dodatkowy znaczek, który w regexpach nie występuje, a który będzie na niego zamieniany? W ogóle w Windowsach beznadziejny jest wiersz poleceń :P

  2. PeCet (unlogged)
    31 marca 2006 15:54:23

    znak ^ nie jest zupełnie pomijany, spróbuj go wpisać na końcu jakiegoś polecenia to po naciśnięciu entera będziesz mógł dodać dodatkowe parametry dla tego polecenia np.
    dir^
    Więcej? /w
    Czasem się przydaje :p

  3. Ktos
    31 marca 2006 15:58:18

    Wiem, zauważyłem do czego służy. No cóz, codziennie się człowiek czegoś uczy, o specjalnym działaniu "^" wcześniej nie wiedziałem. Ale znaczek jest pomijany - tj. nie jest przekazywany jako parametr. I o to mi chodziło :-)

    Chyba zamiana czegoś innego na ^ w samym programie będzie dobrym wyjściem. Ale co zamieniać? #? A może @? :-)

  4. Dot
    31 marca 2006 16:02:14

    W sumie każdy z tych znaków może być potrzebny... Może jakiś parametr określający, jaki znaczek zamieniać na ^, żeby do każdego wyrażenia dopasować coś tak, coby pasowało :)

  5. Ja-Joanna
    31 marca 2006 16:26:21

    Ja tam się nie znam, ale może \^ zadziała zgodnie z oczekiwaniem?

  6. Ktos
    31 marca 2006 16:30:47

    Niestety, to nie ten system. Tutaj nie ma takiej sekwencji ucieczki.

    Za to okazało się, że cudzysłów (ktregexplister . "[^(exe)(dll)]" --stats) działa zgodnie z oczekiwaniami. Hura. :-)

  7. Ja-Joanna
    31 marca 2006 16:33:39

    Przecie mówię, że się nie znam. Windowsa nie dotykam od wielu miesięcy już :) Ale tak mi się wydawało jednak. Wiem, że jak się pisze batche to trzeba tak wpisywać np. backslashe (\\), bo inaczej nie zadziałają i zostaną zjedzone.

Zostaw komentarz

W komentarzach dozwolona jest składnia Markdown do formatowania.