Batch - "Jeśli istnieje"


(GOKOP) #1

Czy w batchu jest jakaś instrukcja typu “if exist”?


(Simplex111) #2

Wpisz w konsoli (czyli w programie cmd.exe) taki tekst: “if/?” i sam się przekonaj


(GOKOP) #3

No ale to nie działa :frowning:


(Rolek0) #4

Po wpisaniu polecenia

help

wyświetli ci się lista instrukcji. Jeśli wpiszesz

help

np.

help if

to wyświetli więcej informacji na temat danej instrukcji. Często można też wpisać

/?

np.

if /?

które robi to samo.

Po zapoznaniu się z opisem instrukcji if dowiesz się, że można jej podać argument exist i jak go używać.

Polecam również:

:wink:

(GOKOP) #5

Ale if/? dziala, tylko to co tam podają nie działa -.-


(Rolek0) #6

U mnie działa :stuck_out_tongue: http://rtfm.killfile.pl/


(GOKOP) #7

Co ten link ma do rzeczy? --__–


(Drobok) #8

if/? masz wpisać w wiersz poleceń (win+r :arrow: cmd)


(Rolek0) #9

@op

Zadajesz bardzo ogólne pytanie a potem piszesz „nie działa”, „nie działa”. Ale co ci nie działa? Gdybyś dokładniej opisał, z czym masz problem, miałbyś większą szansę na uzyskanie satysfakcjonującej odpowiedzi. Póki co mamy zabawę w kalambury a nie każdy ma czas i chęci na zgadywanie o co może ci chodzić.


(GOKOP) #10

Wiem -_-

@Rolek0

Jak wpisuje ten kod:

@echo off


if exist "C:/users/GOKOP/desktop/abc.txt" goto am


:am

echo Trolololo

pause


:em

echo uuuuuu

pause

to po prostu najpierw wyświetla się “Trolololo” a następnie “uuuuuu”. (nieważne, czy plik abc.txt istnieje czy nie)


(Rolek0) #11

Po skoku do etykiety am wykonywane są wszystkie instrukcje po koleji, łącznie z tymi po etykiecie em.

Jeśli nie ma pliku to nie jest wykonywany skok, tylko przechodzi po prostu do następnej instrukcji po if.

Możesz np. dać przed etykietą skok za blok kodu, wtedy pominie blok, do którego nie wykonujesz bezpośredniego skoku

goto po_em

:em

echo uuuuuu

pause

:po_em

Generalnie przy sprawdzaniu obecności pliku robi się zwykle tak:

if exist "plik.txt" goto jest_plik

echo Brak pliku

goto dalej

:jest_plik

echo Plik istnieje

:dalej

echo Jakies inne rzeczy

Jeśli plik istnieje to skacze do etykiety jest_plik i wykonuje wszystko co jest po tej etykiecie.

Gdy pliku nie ma to przechodzi do następnej instrukcji, czyli wypisuje, że pliku nie ma a następnie skacze do etykiety dalej dzięki czemu omija instrukcje, które są wykonywane w przypadku obecności pliku.

Są to podstawy batcha niewiele związane z samą instrukcją if.


(GOKOP) #12

Ale instrukcja pause też się nie wykonuje, tylko jest chwilowe opóźnienie :c


(Rolek0) #13

U mnie, w podanym przez ciebie fragmencie kodu, pause działa prawidłowo :-s


(GOKOP) #14

Jak to? :o