Tue, 2 Apr 2024 17:30:52 +0200, w <uuh8bc$jc3$1$grzegorz@news.chmurka.net>,
"Grzegorz Niemirowski" <grzegorz@grzegorz.net> napisał(-a):
> radekp@konto.pl <radekp@konto.pl> napisał(a):
> > I jeszcze jedno:
> > To działa:
> > set year=%date:~6,4%
> > set month=%date:~3,2%
> > set day=%date:~0,2%
> > set today="%year%-%month%-%day%"
> > echo %date% %today%
> > I mam to co oczekiwałem.
> > Natomiast tutaj:
> > for /F "delims=;" %%F in (list.txt) do (
> > set fn=%%F
> > if %fn% == %today% (
> > fn zawsze pozostaje pustym ciągiem. Why?
> > A potrzebuję z niej wyciągnąć 10 pierwszych znaków
>
> Pisałem w poprzednim poście. CMD próbuje rozwiązywać wszystkie zmienne od
> razu, zanim w ogóle zacznie wykonywać skrypt. Na początku wartość %%F jest
> pusta, więc fn też będzie puste. Gdy skrypt wejdzie do pętli, wartość fn nie
> jest zmieniana. To jest zupełnie inaczej niż w innych językach
> programowania. Dlatego wspomniałem o EnableDelayedExpansion.
Stosuję to Delayed.
Zrobiłem tak:
set fn=%%~nF
for /F "delims=;" %%F in (list.txt) do (
if %fn% == %today% (
...
)
działa.
Tylko za chiny nie mogę teraz wyodrębnić fragmentu %fn% tak jak przy:
set day=%date:~0,2%
Wprowadzenie %fn:~0,9% zamiast %fn% cały czas daje pełny ciąg.
|