? Bo to “/p” oznacza, że użytkownik ma ustalić te zmienną, a to przecież bez sensu :? – Dodane 12.09.2012 (Śr) 20:35 – Ech… w ogóle nie działa :L w momencie
set /p lol="c:\plik.txt"
Mam "składnia polecenia jest niepoprawna i tyle :L Żadnych wyjaśnień. >_>
Próbowałem też bez “/p” i bez cudzysłowia przy ścieżce i nic >.<
Polecenie set musi zawierać parametr /p, który oznacza, że wartość zmiennej środowiskowej nie zostaje przypisana bezpośrednio w pliku bat, ale zostanie wczytana ze strumienia wejściowego, którym z reguły jest klawiatura. Po prostu - użytkownik wpisze nazwę i naciśnie klawisz Enter. Możliwe jest jednak także przekierowanie strumienia wejściowego i - zamiast z klawiatury - wczytanie wartości zmiennej z pliku. Za przekierowanie strumienia wejściowego odpowiada znak “<”.
Jako ciekawostkę dodam, że możliwe jest również przekierowanie strumienia wyjściowego do pliku, wtedy użyjemy znaku “>”, aby nadpisać istniejący lub utworzyć nowy plik lub znaków “>>”, aby utworzyć nowy lub dopisać na końcu istniejącego pliku.
Cała instrukcja warunkowa if musi być w jednym wierszu (chyba, że zastosujemy nawiasy)
Co do używania cudzysłowów, to w większości są niepotrzebne. Dla przykładu taka instrukcja:
if %zmienna%=="OK" echo Jest OK
jest spełniona, jeżeli nasza zmienna ma wartość “OK” , a nie, jak mogłoby się wydawać, samo OK. Taki kod powinien działać
@echo off
set /p lol=<"c:\plik.txt"
if %lol%==am echo trolololo
if %lol%==em echo ulolao
Otóż kiedy daje tylko to (od razu po @echo off) to jest OK, ale jak umieszczę to w etykiecie, i dam przekierowanie do niej, to program bez żadnych błędów się wyłącza.