Mam plik wsadowy i chcę dołączyć plik zewnętrzny zawierający niektóre zmienne (powiedzmy zmienne konfiguracyjne). Czy to możliwe?
batch-file
Pablo
źródło
źródło
Odpowiedzi:
Uwaga: Zakładam pliki wsadowe systemu Windows, ponieważ większość ludzi wydaje się nie zdawać sobie sprawy, że istnieją znaczące różnice i po prostu ślepo wywołuje wszystko z szarym tekstem na czarnym tle DOS. Niemniej jednak pierwszy wariant powinien działać również w DOS.
Konfiguracja wykonywalna
Najłatwiejszym sposobem jest po prostu umieszczenie zmiennych w pliku wsadowym, z których każda ma własną
set
instrukcję:aw głównej partii:
Oczywiście umożliwia to również tworzenie zmiennych warunkowo lub w zależności od aspektów systemu, więc jest dość wszechstronny. Jednak może tam działać dowolny kod i jeśli wystąpi błąd składni, główna partia również zostanie zakończona. W świecie UNIX wydaje się to być dość powszechne, szczególnie w przypadku powłok. A jeśli się nad tym zastanowić,
autoexec.bat
to nic innego.Pary klucz / wartość
Innym sposobem byłyby jakieś
var=value
pary w pliku konfiguracyjnym:Następnie możesz użyć następującego fragmentu kodu, aby je załadować:
Wykorzystuje to podobną sztuczkę jak poprzednio, a mianowicie po prostu używając
set
w każdej linii. Cytaty są tam, aby uciec rzeczy jak<
,>
,&
,|
. Jednak same pękną, gdy w danych wejściowych zostaną użyte cudzysłowy. Zawsze też musisz zachować ostrożność podczas dalszego przetwarzania danych w zmiennych przechowywanych z takimi znakami.Ogólnie rzecz biorąc, automatyczne unikanie dowolnych danych wejściowych, aby nie powodować bólu głowy lub problemów w plikach wsadowych, wydaje mi się prawie niemożliwe. Przynajmniej nie znalazłem jeszcze sposobu, aby to zrobić. Oczywiście przy pierwszym rozwiązaniu przenosisz tę odpowiedzialność na osobę piszącą plik konfiguracyjny.
źródło
Jeśli zewnętrzny plik konfiguracyjny jest również prawidłowym plikiem wsadowym, możesz po prostu użyć:
wewnątrz skryptu. Spróbuj utworzyć następujący a.bat:
i b.bat:
Uruchomienie a.bat powinno wygenerować wynik:
źródło
call
, co jest btw synchroniczne), mówi "proces nie może uzyskać dostępu do pliku, ponieważ jest używany" i nie można go wywołać.Batch używa nawiasów mniejszych niż i większych jako rur wejściowych i wyjściowych.
Użycie tylko jednego nawiasu wyjściowego, jak powyżej, spowoduje nadpisanie wszystkich informacji w tym pliku.
Użycie podwójnego prawego nawiasu spowoduje dodanie następnej linii do pliku.
Spowoduje to wykonanie parametrów na podstawie wierszy pliku. W tym przypadku używamy dwóch wierszy, które będą wpisywane przy użyciu „echo”. Lewy nawias dotykający prawego nawiasu oznacza, że informacje z tego pliku zostaną przesłane potokiem do tych wierszy.
Skompilowałem przykładowy plik do odczytu / zapisu. Poniżej znajduje się plik podzielony na sekcje, aby wyjaśnić, co robi każda część.
W tym przykładzie SRU może być czymkolwiek. W rzeczywistości ustawiamy go, aby zapobiec awarii, jeśli naciśniesz Enter zbyt szybko.
Teraz musimy zapisać zmienne do pliku.
Używam .cdb jako skróconej formy dla „Bazy poleceń”. Możesz użyć dowolnego rozszerzenia. Następna sekcja to przetestowanie kodu od zera. Nie chcemy używać ustawionych zmiennych, które zostały uruchomione na początku pliku, w rzeczywistości chcemy, aby ładowały się Z pliku settings.cdb, który właśnie napisaliśmy.
Więc po prostu wypisaliśmy pierwsze dwa wiersze informacji, które napisałeś na początku pliku (które możesz pominąć ustawiając wiersze, aby sprawdzić, czy działa), aby ustawić zmienne input i input2.
Spowoduje to wyświetlenie informacji, które zostały ustawione podczas przesyłania pliku settings.cdb do nawiasów. Jako dodatkowy czynnik motywujący do dobrej pracy, naciśnięcie klawisza Enter i ustawienie wartości domyślnych, które wcześniej ustawiliśmy jako „1”, zwróci komunikat dotyczący dobrej pracy. Używanie rur wspornikowych działa w obie strony i jest znacznie łatwiejsze niż ustawienie opcji „FOR”. :)
źródło
Więc musisz to zrobić dobrze ?:
źródło
Wynik:
$ RunCount = 1
$ RunCount = 2
$ RunCount = 3
Technika opisana powyżej może być również używana do udostępniania zmiennych w wielu plikach wsadowych.
Źródło: http://www.incodesystems.com/products/batchfi1.htm
źródło
Niby stary temat, ale kilka dni temu miałem to samo pytanie i wpadłem na inny pomysł (może komuś się jeszcze przyda)
Na przykład możesz utworzyć plik config.bat z różnymi tematami (rodzina, rozmiar, kolor, zwierzęta) i zastosować je indywidualnie w dowolnej kolejności w swoich skryptach wsadowych:
Następnie możesz go używać w dowolnym miejscu, wywołując w pełni za pomocą polecenia „call config.bat all” lub wywołując tylko jego części (patrz przykład poniżej). pewnego razu. Niektóre zmienne być może jeszcze nie chcesz, aby były wywoływane, więc możesz je później wywołać.
Przykład test.bat
Mam nadzieję, że pomoże to sposób, w jaki inni pomagają mi tutaj, udzielając odpowiedzi.
Krótka wersja powyższego:
config.bat
test.bat
Dobry dzień.
źródło
Nie zapominajmy o starych dobrych parametrach. Podczas uruchamiania pliku * .bat lub * .cmd możesz dodać do dziewięciu parametrów po nazwie pliku poleceń:
Przykładowy skrypt
Plik myscript.bat mógłby wyglądać mniej więcej tak:
Przykładowe dane wyjściowe
źródło
Próbując użyć metody z możliwą do wykonania konfiguracją zauważyłem, że może ona działać lub NIE działać w zależności od tego, gdzie w skrypcie znajduje się wywołanie:
zadzwoń do config.cmd
Wiem, że to nie ma sensu, ale dla mnie to fakt. Kiedy „call config.cmd” znajduje się na górze skryptu, działa, ale jeśli dalej w skrypcie nie działa.
Mówiąc nie działa, mam na myśli zmienne nie są ustawione w skrypcie wywołującym.
Bardzo, bardzo dziwne !!!!
źródło