Batch programozás - Szoftverfejlesztés fórum

üzenetek

hozzászólások


sonar
(addikt)
Blog

Ez a trükk megvan. Csak a példában egyszerűbb volt fix-en megadni.


sonar
(addikt)
Blog

Ismét én, egy anomáliával.

@echo off
SET "LOGFILE=d:\test.log"
SET "local_folders1=D:\Folder1 D:\Folder2 D:\Folder3 D:\Folder4"
SET "local_folders=%local_folders1% D:\Folder5 D:\Folder6 D:\Folder7 D:\Folder8"
FOR %%x IN (%local_folders%) DO (
IF EXIST %%x ECHO %%x >>%LOGFILE%
)

Nézegettem a logokat és legtöbbször csak a második SET tartalma van benne:
D:\Folder5
D:\Folder6
D:\Folder7
D:\Folder8

Kézzel lefuttatva akárhányszor csinálom mindig jó. :Y
Itt már megint mi a bánat van? :F


sztanozs
(veterán)
Blog

Nem vagyok benne biztos, de szerintem EnableDelayedExpansion-t kell hasznalni.
https://ss64.com/nt/delayedexpansion.html


sonar
(addikt)
Blog

Teszek egy próbát.
Elég egyszer beszúrni a batch elejére?


sztanozs
(veterán)
Blog

Igen eleg egyszer kiadni a
SETLOCAL EnableDelayedExpansion
parancsot, ha menet kozben ki akarod valamiert kapcsolni akkor kell csak a
SETLOCAL DisableDelayedExpansion
parancs. Viszont a valtozok hasznalatanal figyelni kell, hogy nem mindig %valtozo_nev%, hanem !valtozo_nev! formatumot is kell(het?) hasznalni.

[ Szerkesztve ]


Pöttön
(őstag)

Sziasztok!

Az egyik programnál amit használok egy ilyen bat-al indítom:

CLIP < CONNECT.TXT
start "reboot_launcher" "C:\Program Files\reboot_launcher\reboot_launcher.exe"

A connect.txt-ben egy ip cím van, így ezt automatán vágólapra helyezi.
A kérdésem az lenne, hogy ezt a vágólapra helyezést ezt lehet valmi parancsal késleltetni?
Pl hogy a bat file elindÍtása után 10-15 mp mulva helyezze a connect.txt tartalmát vágólapra?

A segítséget előre is köszi! :R


Pöttön
(őstag)

Köszönöm!
A timeout parancsal tökéletesen működik! :R


PioDVD
(senior tag)

Üdv!
Egy egyszerű problémát kellene megoldanom, de nem jövök rá - pedig tuti, hogy van megoldás.

Beolvasok egy paramétert, ami egy 4 jegyű szám.

Ha SET /A var = %1 (azaz numerikus a típusa), akkor tökéletes, ha nem 0-val kezdődik. Viszont ha 0-val kezdődik, akkor invalid number.

Ha SET var = %1 (azaz string a típusa), akkor viszont 0 értéket vesz fel.

Elvileg utóbbi kellene nekem, legyen string, abban ott kellene lennie a 0-nak az elején, de az egyáltalán nem működik.

Már kínomban az angol nyelvű oldalakat is bújtam, de egyszerűen semmi.

Nekem jó lenne számként is (0123 helyett 123), azt már ki tudnám pótolni, ha nem invalid numberre futna, de a string adná magát igazából.

Tudom, lehetne csak 3 (vagy 2, 1) számjegyet beadni, de nem túl elegáns, ráadásul lehet a 4 számjegy 0000 is, ott nem lenne mit beírni, így elcsúsznának a paraméterek (ez 4-ből az első paraméter).

Köszönöm, ha valaki megszán a megoldással. :)


sztanozs
(veterán)
Blog

Ha 0-val kezdodik, akkor a parancs oktalis szamnak ertelmezi, tehat a 8 es 9-es szamok ervenytelenek, raadasul az ertek tizes szamrendszerben is mas lesz:
01 (okt) = 1 (dec)
07 (okt) = 7 (dec)
010 (okt) = 8 (dec)

Itt van par jo megoldas:
https://stackoverflow.com/questions/14762813/remove-leading-zeros-in-batch-file

[ Szerkesztve ]


Sonja
(veterán)

Nagy segítség kellene. Még Linux alatt írtam pár shell script-et, amit most szeretnék átültetni batch-re.

Itt egy egyszerű ebook konvertálás bash scripte.

Eslőnek a paraméter vizsgálata van. Ha nincs paraméter megadva, akkor visszaadja a "Parameters required!" üzenetet.

Utána a pramétert "lebontom", hogy ki tudjam belőle nyerni a kiterjesztést. Ha ez PDF (átkonvertálva nagyra, tehát mindegy, hogy az ebook.pdf vagy ebook.PDF van megadva), akkor egy másik parancsot hajt végre és kilép. Ha nem PDF, akkor a ismét egy másik parancsot hajtja végre. Az ebook-convert-nek át kell adni a konvertált file nevét, és a konvertálandó file nevét kiterjesztéssel együtt, mert abból állapítja meg, hogy mire kell kovertálni.

Tehát az egész script lényege, hogy megadom pl. econv.sc ebook.mobi, akkor végrehajtódik az ebook-convert ebook.mobi ebook.epub parancs. Ha az econv.sc ebook.pdf parancsot adom meg, akkor ebook-convert ebook.pdf ebook.epub --no-image --unwrap-factor=0.1 parancs hajtódik végre.

Az ebook-convert parancssori program az ingyenes Calibre program része.

Tud valaki segíteni át-/megírni?! :F :B

Jó lenne esetleg valami doksi is (példákkal), hogy tanuljak, és magam is meg tudjam írni a többi scriptemet (nem nagy dolgok, hasonlóak mint ez). :K

Előre is köszönöm! :R

[ Szerkesztve ]


cigam
(félisten)
Blog

[bashconverter]

@echo off IF "%#%" "-eq" "0" ( echo "Parameters required!" exit "1" ) SET book=%~1 SET %~1bookext=%book% SET %~1%book%bext=%bookext% IF "%bext%" "=" "PDF" ( ebook-convert "%~1" "%1%.*%.epub" "--no-image" "--unwrap-factor=0.1" exit "1" ) ebook-convert "%~1" "%1%.*%.epub"

[ Szerkesztve ]


Sonja
(veterán)

Köszönöm, ezt próbáltam már. Sajnos rögtön az alábbi hibával leáll az elkészült .bat file! :( :R

"-eq" was unexpected at this time.


cigam
(félisten)
Blog

Azt sejtettem hogy nem ilyen egyszerű :B
A tutorialspoint elég jó kiinduló pont.
@echo off
if "%1"=="" goto :hiba
set fajlnev=%~n1
set kiterjesztes=%~x1
if kiterjeztes=="pdf" (start "ebook-convert %1 fajlnev+".epub" "--no-image" "--unwrap-factor=0.1")
exit
:hiba
echo "Nincs megadva paraméter"

Szinte biztos nem működik, de kb ilyen lenne batch-ben.

[ Szerkesztve ]


Sonja
(veterán)

Köszönöm a programot, és az oldalt! :R Így meg bírtam írni magamnak, kis "szépséghibával". Space nélküli fileokat kezel csak. :D Erre még nem jöttem rá, hogy mi a megoldás. Sajna a "valami file.mobi" vagy 'valami file.mobi' nem működik. :U Ez van. :)

Itt a batch file!


cigam
(félisten)
Blog

Amiben szóköz van, azt a fájlnevet idézőjelbe kell tenni, amiben nincs, annak meg mindegy. Szóval a fájlneveket tedd idézőjelbe.
ebook-convert "%1" %fn%".epub"


Sonja
(veterán)

Így se volt jó, de végül megoldottam! :D Itt a végleges ebook converteres batch file-om! :C Nagyon köszönöm a segítséget! :R


cigam
(félisten)
Blog

Igazán nincs, mit, de munka közben nem volt sok idő kigondolni, hogy pontosan mi lenne a jó, de remélem iránymutatásnak megtette. :B


PioDVD
(senior tag)

Kösz szépen!
Gyanús volt, mert 8-tól "őrült meg" de elhessegettem, mert miért is lenne 8-as számrendszer. :)


Sonja
(veterán)

Ha ezt a parancsot futtatom parancssorból, akkor szépen végre is hajtódik, minden probléma nélkül.

for %f in (*.webp) do magick -quality 95 "%~f" "%~nf.jpg"

Ha viszont beleteszem egy batch file-ba, akkor az alábbi hibaüzenetet kapom:

The following usage of the path operator in batch-parametersubstitution is invalid: %~nf.jpg"

For valid formats type CALL /? or FOR /?The syntax of the command is incorrect.

Mi lehet a probléma (és a megoldás)!? :F :U

üzenetek