Tue, 2 Apr 2024 15:59:12 +0200, w <uuh2vg$e9d$1$grzegorz@news.chmurka.net>,
"Grzegorz Niemirowski" <grzegorz@grzegorz.net> napisał(-a):
> radekp@konto.pl <radekp@konto.pl> napisał(a):
> > Czy to powinno działać czy zły poradnik czytam?
> > W list.txt są ścieżki do plików typu:
> > c:\aaa\plik1.txt
> > c:\aaa\plik2.pdf
> > (itd.)
> > W batchu chcę się dorwać do rozszerzenia pliku (txt, pdf itd.)
> > for /F "delims=;" %%F in (list.txt) do (
> > set str = %%F
> > set ext = %str:~-3%
> > echo %ext%
> > (
> > echo "EXT: %ext% -- Plik %%F"
> > ) >>output.avs
> > )
> > zwraca mi:
> > "EXT: ~-3 -- c:\aaa\plik1.txt"
> > "EXT: ~-3 -- c:\aaa\plik2.pdf"
> > Oczywiście zamiast ~-3 powinno być rozszerzenie. A nie jest. Why?
>
> Ponieważ CMD jest dziwny i powinno się stosować coś normalnego.
> Dłuższe wyjaśnienie: zmienne w CMD są obliczane od razu po uruchomieniu
> skryptu a nie jak wykonanie dojdzie do danej linijki. Jak skrypt startuje,
> to %%F jest puste, więc str i ext też będą puste. Jak koniecznie chcesz CMD,
> to zainteresuj się EnableDelayedExpansion. Ponadto CMD ma specjalne funkcje
> do wyciągania rozszerzeń, nie trzeba odliczać 3 znaków od końca. Zobacz
Tak, już wygooglałem. Nic to nie dało, ale przypomniałem sobie o funkcjach
rozszerzeń itp. i to działa.
Droga przez mękę...
|