Batch - czytanie z pliku


(Igorbugajski2) #1

Jak zrobić w batch program czytający jakiś plik? (np. txt)

Czyli że na przykład jak w pliku będzie pisać "am" to program napisze "trololololo" a jak będzie "em" to program napisze "ulolao".

Wiem, że przykłady trochę debilne*, ale tak już mam. :wink:


* - Jeśli to "przekleństwo" to przepraszam :frowning:


(Drobok) #2

Spróbuj tak:

@echo off 

set lol= 

set /p lol=<"c:\plik.txt" 

if %lol%=="am"

  echo "trolololo"

if %lol%=="em"

  echo "ulolao"

(Igorbugajski2) #3

Dziękuje :slight_smile: Da się na tym forum dać coś w rodzaju plusa? :smiley:


(Drobok) #4

Nie :stuck_out_tongue:

Nie jestem pewien czy zamiast %lol% nie powinno być "%lol%" (musisz to sprawdzić)


(Igorbugajski2) #5

Szkoda :frowning: Ale masz wyimaginowany + xD

-- Dodane 12.09.2012 (Śr) 20:12 --

Zaraz... (nie dam code żeby móc pokolorować)

@echo off

set lol=

set /p lol=<"c:\plik.txt"

if %lol%=="am"

echo "trolololo"

if %lol%=="em"

echo "ulolao"

Nie powinno być przypadkiem tak:

set lol="c:\plik.txt"

? 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 >.<


(Simplex111) #6

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

(Igorbugajski2) #7

OK dzięki, ale jest jeszcze taki problem:

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. :frowning:


(Simplex111) #8

Pokaż kod, który nie działa... a skoro nie działa, to gdzieś musi być błąd. Bez kodu ciężko będzie ustalić gdzie.


(Igorbugajski2) #9

Już nieważne, działa. ^^ (napisalem jeszcze raz i było dobrze o_O)