Jak ustawić zmienną tablicową w skrypcie wsadowym DOS? Chciałbym załadować go z listą nazw plików do przetworzenia. Naprawdę chciałbym, aby było to tak proste, jak to możliwe. Dziękuję Ci.
33
Jak ustawić zmienną tablicową w skrypcie wsadowym DOS? Chciałbym załadować go z listą nazw plików do przetworzenia. Naprawdę chciałbym, aby było to tak proste, jak to możliwe. Dziękuję Ci.
Odpowiedzi:
Rozgryzłem to:
Zrobiłem coś takiego kilka lat temu, więc trochę to wymyśliłem. (przy okazji, nie znoszę wymyślać koła na nowo.) Teraz, gdy jest opublikowany tutaj, mam nadzieję, że inni również uznają to za przydatne.
źródło
()
składni.FILE_LIST[0]
.Tak, możesz wykonywać tablice wsadowo. Chociaż nie są dokładnie takie jak tablice w C lub VB, MOŻESZ to zrobić:
źródło
Z bloga Jakash3, Arrays in Batch opisuje, jak emulować tablice w wierszu polecenia.
Plik wsadowy o nazwie array.bat znajduje się w artykule, który zawiera bibliotekę funkcji używanych do obsługi tablic. Musisz zaznaczyć tekst w artykule i wkleić go do pliku nietoperza.
Na przykład następujący skrypt testowy:
generuje następujące dane wyjściowe:
źródło
Spowoduje to zapełnienie tablicy i wydrukowanie jej
Możesz użyć nazwy1 nazwy2 nazwy3 zamiast nazw [1] nazw [2] nazw [3], pisząc nazwy! zamiast nazw [! i!]. Tworzy tablicę, generując nazwy zmiennych. Partia nie zawiera struktury tablic. Ale jest tak schludny, jak każda struktura tablic, a zapełnianie lub drukowanie wygląda dokładnie tak, jak można wypełnić lub wydrukować tablicę w odpowiednim języku (który faktycznie ma strukturę tablic!)
wyjście-
Niektóre wyjaśnienia
Z
setlocal enabledelayedexpansion enableextensions
! Var! zamiast% var% jest konieczne, aby zapobiec nieparzystemu zachowaniu, tak aby zmienne zachowywały się poprawnie w FOR lub IF. To dziwne z plikami wsadowymi. Zobacz,set /?
gdzie jest to wspomniane dalej.To właśnie zapełnia tablicę i jest całkiem proste dla każdego, kto wie o tablicach. Możesz także zrobić,
names[0]=bob
names[1]=tom
names[2]=joseph
choć jedną z piękności tablicy jest możliwość zapełnienia tablicy pętlą, co właśnie zrobiłem tutaj.Wyświetla tablicę. %% f, jeśli wyświetlisz echo, przejdzie od 0 do ostatniego indeksu tablicy, w krokach co 1. więc wydrukuje nazwy [0] nazwy [1] nazwy [2]
źródło
W tym, co chcesz zrobić, co powiesz na użycie zmiennej wejściowej dla każdej nazwy pliku, którą możesz pobrać za pomocą zmiennych% 1% 2 itd. Np. Mybat.bat plik1.nam plik2.nam itp.
Następnie można użyć tych zmiennych w pętli, ale wystarczy użyć% 1 jako parametru głównego, ponieważ można użyć SHIFT, aby ustawić inne zmienne w pozycji „% 1”, testując wartość null (koniec zmiennych) z czymś jak JEŻELI „X% 1” == „X”
na przykład:
źródło
Jeśli zapiszesz listę plików w pliku filelist.txt, możesz
FOR
przeczytać i przetworzyć każdą linię pliku, na przykładdo wydrukowania każdego wiersza pliku (do pierwszego „|” w wierszu. Jeśli nie określisz własnego ogranicznika, zostaną użyte spacje i tabulatory, więc jeśli ścieżki nie mają spacji, musisz podać znak które nie pojawią się w pliku, aby uzyskać pełne linie).
źródło
W jednym z komentarzy do odpowiedzi, którą podajesz,
Uważam, że to, czego szukasz, to Makefile i prawdopodobnie cygwin, który da ci przyzwoitą skorupkę (bash lub cokolwiek innego).
źródło
Zamień ciągi i literę w tekście.
Wypróbuj pętlę, rozwijając tekst do ciała i zastępując var var. Przeciągnij i upuść plik tekstowy, aby% 1 był wprowadzany przez użytkownika przez wywołanie polecenia set.
źródło
Coś takiego w pliku wsadowym? Wybierz plik w folderze. << to komentarz, bez kodu
źródło
Naprawdę nie możesz zrobić tablicy w wierszu polecenia (a także tak naprawdę nie jest to DOS, chyba że używasz systemu Windows 3.1). Można jednak przetwarzać na podstawie zestawu za pomocą polecenia FOR.
Aby utworzyć listę plików do przetworzenia, możesz ręcznie utworzyć plik tekstowy do przetworzenia lub użyć
dir /b <mask>
polecenia w pętli FOR.Czego nauczyłem się na własnej skórze z FOR - musisz użyć zmiennej POJEDYNCZEGO ZNAKU jako kursora!
źródło
Sprawdź dokumentację Microsoft dotyczącą polecenia wsadowego FOR . Za pomocą FOR można iterować po zestawie katalogów, plikach w katalogu lub plikach w katalogu i wszystkich jego podkatalogach.
Domyślnie dla uchwytów ustawia lub po prostu pliki:
Lub dla rekurencyjnego:
lub tylko dla katalogów:
źródło
to jest mały plik do debugowania, który poświęciłem chwilę na przetestowanie tablicy z mojej gry Tic Tac w BATCH / CMD. potrafi czytać i zapisywać do iz tablicy bez dużych i skomplikowanych kodów.
korzystanie z niego jest proste:
Zapis do tablicy
Czytanie z tablicy
Kod:
źródło