[BATCH] Jak użyć zmiennej np %1 odwołujac sie do pliku?


(andrzejt17) #1

Witam,

Mam taki problem. Chcę zrobić tak, że jeżeli plik batch wywołano bez żadnej zmiennej (d:\program.bat) to program robi określoną czynność (przechodzi do etykiety wewnątrz pliku) a jeśli przy wywoływaniu programu została wpisana zmienna (d:\program.bat install) to skrypt sprawdzi wpisaną zmienną i przekieruje do odpowiedniej etykiety. Mniej więcej wiem jak to zrobić ale ciągle napotykam jakiś problem.. Oto kod:

if defined %1 (goto etykieta2) else (goto etykieta)


:etykieta2

if %1 equ lol (goto lol)

if %1 equ mleko (goto mleko) else (echo Nieprawidłowa zmienna & pause & exit)


:lol

:: (jakaś tam treść)

:mleko

:: (jakaś tam treść)


:etykieta

:: wczytuje normalnie programik

Próbowałem z %%1 zamiast %1 oraz z "%1" i "%%1". Jestem w kropce. Da się w ogóle coś takiego zrobić?


([alex]) #2

Skąd ty ten defined wytrzasnąłeś, w unixie tak jest ale nie pod windows.

if .%1.==.. goto etykieta


(andrzejt17) #3

A jeśli %1 nie jest zdefiniowane? To skrypt zwróci mi, że to co jest po == jest niespodziewane...


([alex]) #4

jeżeli będzie niezdefiniowane to wyjdzie:

if ..==.. goto etykieta

więc przejdzie na tą etykete


(andrzejt17) #5

Napisz to na konkretnym przykładzie bo to nie ma sensu..


([alex]) #6

@echo off

if .%1.==.. goto brakparametru

echo podano parametr "%1"

goto stop

:brakparametru

echo nie podano zadnego parametru

:stop


(andrzejt17) #7

O! Wielkie dzięki :slight_smile: Napisałem całkiem spory kod (ponad 400 linii) ale nie wiedziałem, że kropki maja takie znaczenie. Jeszcze 1 pytanie, tak jak equ to == to jak będzie neq ? w php by to było != or !== a tutaj jak?


([alex]) #8

wpisz w wierszu poleceń:

if /?

i sobie poczytaj.


(andrzejt17) #9

Jak by to tam było to bym tu nie pisał -.-''


([alex]) #10

Przejrzyj się uważnie trzeciemu wierszowi:

IF [NOT] string1==string2 command