CMD - SET Ver= FindSTR ...

CMD - SET Ver= FindSTR ...
« kdy: 27. 07. 2023, 08:02:14 »
Snažím se načíst data ze souboru do proměnné ale nedaří se mi to.
předpokládal jsem že bych použil FINDSTR ale do proměnné se mi uloží jen příkaz a ne obsah

set VERZE=FINDSTR VERSION= Version.id
echo VERZE:%VERZE%

výsledek je "FINDSTR VERSION= Version.id"

nevíte jak to zadat aby se do proměnné načel obsah?


Medo77

  • ****
  • 301
    • Zobrazit profil
    • E-mail
Re:CMD - SET Ver= FindSTR ...
« Odpověď #1 kdy: 27. 07. 2023, 09:17:55 »
zo suboru to ide celkom dobre ..

Re:CMD - SET Ver= FindSTR ...
« Odpověď #2 kdy: 27. 07. 2023, 09:52:27 »
to není špatné ale v souboru toho mám více, šlo by to bez vygenerování dalšího souboru?

FINDSTR VERSION= Version.id > test.txt
set /p S2=<test.txt
del test.txt
set VER=%S2:~8%
echo VER:%VER%
pause

Medo77

  • ****
  • 301
    • Zobrazit profil
    • E-mail
Re:CMD - SET Ver= FindSTR ...
« Odpověď #3 kdy: 27. 07. 2023, 10:24:32 »
v ramci cmd
for /f "tokens=*" %%i in ('FINDSTR "AAA" a.txt') do set test=%%i

setne premennu test retazcom AAA
--
for /f "tokens=*" %%i in ('FINDSTR "AAA" a.txt') do echo %%i
ju len vypise ...

Re:CMD - SET Ver= FindSTR ...
« Odpověď #4 kdy: 27. 07. 2023, 10:31:47 »
tak to už je skvělé.
Jen by mi zajímalo jestli jde upravit tento výraz
set VERZE=FINDSTR VERSION= Version.id
aby se přiřadila hodnota (například uzavřít do závorek nebo to nějak označit aby se příkaz provedl než se přiřadí a nebo to nelze?


Medo77

  • ****
  • 301
    • Zobrazit profil
    • E-mail
Re:CMD - SET Ver= FindSTR ...
« Odpověď #5 kdy: 27. 07. 2023, 12:19:02 »
Uff ... daj sem asi realny priklad z toho vystupu, az sa v tom zorientujem, a co od toho cakas ...

Re:CMD - SET Ver= FindSTR ...
« Odpověď #6 kdy: 27. 07. 2023, 13:19:30 »
ta poslední rada to vyřešila, tak to funguje také dobře.
jen mě zajímalo jestli se ten způsob se SET Ver= FindSTR... dá použít jak jsem zamýšlel.
vybral jsem požadovaná řádek v z kterého chci použít číslo akorád njsem nevěděl jak ho co nejjednodušeji dát do proměnné (použil jsem nato ještě skript ve VBS ale pak jsem to chtěl mít všechno v jednou souboru v .bat - což už je tak jsem celkem spokojený :-) )

provedení s FOR :

:: vyhleda a ulozi do promene radek dle hledaneho vyrazu
for /f "tokens=*" %%i in ('FINDSTR "VERSION=" Version.id') do set VER=%%i
:: orizne z nej nepotrebnou cast a ulozi do promenne
set VER=%VER:~8%
:: zobrazi pozadovanou promennou
echo VER:%VER:~8%

funguje, ze souboru to extrahuje řádek na kterém je aktuální verze a tu pak oříznu jen na potřebné číslo, které následně připojuji k názvu souboru se kterým chci pracovat.
soubor Version.id obsahuje dva řádky :
VERSION=4.23.1849
VERSIONMM=4.23

potřebuji vybrat tu první k tomu jsem použil FindSTR... a pak odstranil část textu tak aby zbylo jen číslo verze.
Jelikož je ta verze kterou potřebuji jako první řádek funguje také toto:

::nacte 1. radek souboru
set /p VER1=<Version.id 
:: orizne z nej nepotrebnou cast a ulozi do promenne
set VER1=%VER1:~8%       
:: zobrazi pozadovanou promennou
echo VER1:%VER1%

když jsem zkoušel to provedení s FOR tak jsem zdvojil požadovaný řádek a našlo to 4 výsledky jen je to ukládá stále do stejné proměnné a ve výsledku mám 1 záznam (v mém případě to nevadí v souboru bude vždy jen jedna verze)
ale pro zajímavost by mi zajímalo jak ten příkaz s FOR rozvynout aby mi zachoval všechny výsledky hledání.
Předpokládám že za DO bych dal více příkazů ale nevím jak, klasický způsob ozávorkování se mi nezdařil, přidat další proměnnou, kterou bych inkrementoval a upravoval s ni název proměnné do které se výsledky ukládají také neumím.

hmmmw

Re:CMD - SET Ver= FindSTR ...
« Odpověď #7 kdy: 27. 07. 2023, 13:29:52 »
Můžu se zeptat proč se používá cmd, a ne PowerShell?

Re:CMD - SET Ver= FindSTR ...
« Odpověď #8 kdy: 27. 07. 2023, 13:33:03 »
je to pro snadné použití a běží to skoro všude, neříkám že s cmd umím ale s PowerShell skoro vůbec

Medo77

  • ****
  • 301
    • Zobrazit profil
    • E-mail
Re:CMD - SET Ver= FindSTR ...
« Odpověď #9 kdy: 27. 07. 2023, 14:22:15 »
https://ss64.com/nt/for.html
Zaujima to asi toto

Using variables within a FOR loop
To update variables within each iteration of the loop we must either use EnableDelayedExpansion or else use the CALL :subroutine mechanism as shown below: