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

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

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

if .%1.==… goto etykieta

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

jeżeli będzie niezdefiniowane to wyjdzie:

if …==… goto etykieta

więc przejdzie na tą etykete

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

@echo off

if .%1.==… goto brakparametru

echo podano parametr “%1”

goto stop

:brakparametru

echo nie podano zadnego parametru

:stop

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?

wpisz w wierszu poleceń:

if /?

i sobie poczytaj.

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

Przejrzyj się uważnie trzeciemu wierszowi:

IF [NOT] string1==string2 command