kocotian Temat założony przez niniejszego użytkownika |
Wiele plików w strumieniu plikowym » 2020-06-05 19:18:39 Witam! Robię programik który musi złapać kilka plików. Normalnie nie byłoby to problemem, jednak nazwy plików pochodzą z argv i chodzi mi o to, że w jednym argumencie może być zarówno jeden plik (przykładowo `plik.pdf`), może być również kilka plików (`{zdjecie.png, esej.pdf}`) lub wszystkie (`*`). Stąd pytanie - czy istnieje możliwość implementacji i jak by to wyglądało?
btw - chodzi mi o coś podobnego do `mkdir -p {zdjecia,filmy}` w linuksie
Z góry dzięki za podpowiedzi! |
|
DejaVu |
» 2020-06-06 11:21:19 aplikacja.exe parametr1 parametr2 ... parametrN
W main nazwę wywołania jak i parametry otrzymasz poprzez argc i argv. |
|
kocotian Temat założony przez niniejszego użytkownika |
» 2020-06-06 13:06:00 Wiem, chodzi mi właśnie o to, że w jednym parametrze argv może znajdować się kilka plików, np: "{dokument.pdf,dokument2.pdf}" lub też wszystkie, czyli * . Aktualnie mam pętlę i każdy kolejny plik jest po prostu oddzielnym, kolejnym argumentem, jednak bardzo zależy mi na tym, żeby było to co wyżej. |
|
kocotian Temat założony przez niniejszego użytkownika |
» 2020-06-06 15:18:25 Może prościej będzie jeśli wyjaśnię do czego dokładnie ma to służyć - robię 4fun prosty archiwizator plików i przy archiwizowaniu wielu plików wywołanie programu wraz z parametrami aktualnie wygląda tak: nar -a kod.cpp scr1.png scr2.png a chcę żeby wyglądało to przykładowo tak: nar -a {kod.cpp,scr*.png} oraz żeby była możliwość wybrania wszystkich plików, czyli: nar -a * |
|
pekfos |
» 2020-06-06 19:46:31 Pod Linuksem gwiazdka jest interpretowana przez bash i nie trafia do argumentów uruchamianego programu. Jesteś pewien, że to Twój program ma to obsługiwać? A więc np nar -a \*
|
|
kocotian Temat założony przez niniejszego użytkownika |
pekfos to geniusz » 2020-06-06 20:03:04 Wpisałem nar -a * i... zapakowało wszystkie pliki! Dziękuję, pekfos <3! |
|
kocotian Temat założony przez niniejszego użytkownika |
» 2020-06-06 20:14:10 Dla przyszłych użytkowników którzy spotkają się z tym problemem: We wczesnej wersji programu tylko trzeci argument ( argv[ 2 ] ) zawierał nazwę do pliku. Próbowałem wtedy wpisać * jednak zarchiwizowany został jedynie jeden plik. Potem gdy zrobiłem pętle dla wszystkich kolejnych argumentów nie testowałem już tego. Wygląda to najprawdopodobniej tak, że po wpisaniu: nar -a * powłoka bierze wszystkie pliki i podstawia je pod kolejne argumenty, więc działa to teraz, lecz nie działało to wcześniej i w chwili pisania tematu. Temat zamykam, dziękuję jeszcze raz za odpowiedź |
|
« 1 » |