Na przyszłość - ^ w wierszu poleceń
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 ;-)
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
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
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 @? :-)
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 :)
31 marca 2006 16:26:21
Ja tam się nie znam, ale może \^ zadziała zgodnie z oczekiwaniem?
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. :-)
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.