Page 1 of 1

Dávkový súbor - jak nastavit ako ciel adresar neaktivneho panela?

Posted: 25 Feb 2021, 01:03
by AD7
Zdravím,

potreboval by som pomôcť upraviť .BAT súbor tak aby po kliknutí v AS 4.0 (teda jeho spustení) mu bol predaný ako parameter plná cesta (pre výstup) z druhého neaktívneho panela.

Teda tú časť - "D:\" a "D:/ nahradiť cestou v neaktívnom paneli. Vďaka.

môj súbor: mkvtoolnix-batch(output to disk D).bat

Code: Select all

@echo off
set mkvmerge="C:\Program Files (x86)\mkvtoolnix\mkvmerge.exe"
if not exist "options.json" (
    echo Options file 'options.json' not found. Exiting.
    pause>nul
    exit
)
if not exist "D:\" (mkdir "D:\")
for %%f in (*.mkv) do %mkvmerge% @options.json -o "D:/%%f" "%%f"
echo.
echo ============================
echo Done. Press any key to exit.
pause>nul
exit

Re: Dávkový súbor - jak nastavit ako ciel adresar neaktivneho panela?

Posted: 25 Feb 2021, 19:17
by SelfMan
"$(FullPathLeft)$(Name)" "$(FullPathRight)$(Name)"

https://www.tutorialspoint.com/batch_sc ... iables.htm

vsetky premenne, ktore vie salamander odovzdavat su pod ikonami sipky v pravo.
salamander-user-menu.png
salamander-user-menu.png (47.76 KiB) Viewed 12456 times
Tento priklad urobi to, ze vyvola WinMerge, kde ako parametre uvedie cesty k suborom s aktivnym menom v roznych aktivnych adresaroch.

Takze v tvojom pripade je parameter "$(FullPathInactive)" (aj s uvodzovkami, lebo medzery)
a v bataku sa na to potom odvolavas cez %1

Re: Dávkový súbor - jak nastavit ako ciel adresar neaktivneho panela?

Posted: 26 Feb 2021, 13:14
by tukanos
Myslím, že SelfMan odpověděl výborně jen pár poznámek a možná i tipů.

První tip je por SelfMan(a). Pro srovnávání je možná vhodnější "$(FileOrDirToCompareLeft)" (a jeho right varianta) protože umožní porovnávání jak souborů tak adresářů, když je těch souborů na porovnávní více a jsou ve více adresářích nejdou všechny zvolit. Tak to používám s Beyond compare.

Teď k věci:

"$(FullPathInactive)" je opravdu nejvhodnější na zobrazování inaktivní cesty, ale pozor na kombinování s "$(Name)", který bere jméno souboru z aktivní strany, takže při zkombinování těchto dvou by mohla vzniknout neexistující kombinace.

Co se týče odkazování na soubory v batch filech obecně doporučuji používat patrameter %~f1, což je fully qualified pathname. V okamžiku, kdy skriptu dodáte pouze jméno souboru toto umožní expanzi cesty k souboru. V případě, že je dána pouze cesta jako u "$(FullPathInactive)", tak to tu cestup zachová.

Pokud je použit parametr %1 je dobré ho ukládat do proměnné a přitom používat opět uvozovky a rovná se musí být bez mezer:
např:
SET "path=%1"

Co je dobré ještě vědět? Budete potřebovat zpožděnou expanzi proměnných ENABLEDELAYEDEXPANSION a možná i ENABLEEXTENSIONS

Což se v batch file nastavuje na začátku:

Code: Select all

SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
Následně pozdější expanze proměnných probíhá pomocí vykřičníků ! místo procent %. Budete muset přepsat ten for do kompatibilní formy.

Re: Dávkový súbor - jak nastavit ako ciel adresar neaktivneho panela?

Posted: 26 Feb 2021, 15:10
by SelfMan
Vdaka za doplnenie dalsich informacii.

Co sa mna tyka, ja to pouzivam len na obcasne porovnanie dvoch suborov (bez adresarov) preto len takato jednoducha verzia.
V tomto pripade mi islo skor o navigovane AD07, aby vedel, kde dane premenne najde.
Tiez mu odporucam nahliadnut do dokumentacie https://ss64.com/nt/syntax-percent.html

Re: Dávkový súbor - jak nastavit ako ciel adresar neaktivneho panela?

Posted: 27 Feb 2021, 10:08
by tukanos
SelfMan wrote: 26 Feb 2021, 15:10 Vdaka za doplnenie dalsich informacii.

Co sa mna tyka, ja to pouzivam len na obcasne porovnanie dvoch suborov (bez adresarov) preto len takato jednoducha verzia.
V tomto pripade mi islo skor o navigovane AD07, aby vedel, kde dane premenne najde.
Tiez mu odporucam nahliadnut do dokumentacie https://ss64.com/nt/syntax-percent.html
Není zač :). Pokud, používáte pouze jednoduché porovnání, tak to stačí to máte pravdu, ale je dobré vědět, že AS umožňuje i více ;).

Stránka ss64.com je vynikající zdroj nejen pro batch file, ale i pro PowerShell, VB script (z Windows světa). Využíval jsem je hojně když jsem programoval komplexní batch/powershell skripty.

Další stránku co mohu doporučit jsou stránky DOs and DON'Ts When Writing Batch Files (Rob van der Woude's scripting pages). Stojí si za to projít je celé i s příklady.

Re: Dávkový súbor - jak nastavit ako ciel adresar neaktivneho panela?

Posted: 27 Feb 2021, 14:44
by SelfMan
👍 Myslim, ze autorovi prispevku sa to zide.

Re: Dávkový súbor - jak nastavit ako ciel adresar neaktivneho panela?

Posted: 27 Feb 2021, 17:02
by AD7
Vďaka za rady.

Ešte k tým opačným lomítkam v ceste v .BAT súbore:
zístam cestu:
"E:\M\_clean\recepty"
a potrebujem aj s opačnými lomítkami:
"E:/M/_clean/recepty"

Jak na to?

Re: Dávkový súbor - jak nastavit ako ciel adresar neaktivneho panela?

Posted: 27 Feb 2021, 17:32
by tukanos
AD7 wrote: 27 Feb 2021, 17:02 Vďaka za rady.

Ešte k tým opačným lomítkam v ceste v .BAT súbore:
zístam cestu:
"E:\M\_clean\recepty"
a potrebujem aj s opačnými lomítkami:
"E:/M/_clean/recepty"

Jak na to?
Je zapotřebí to uložit do proměnné, následně provést konverzi:

Code: Select all

set "cesta=E:\M\_clean\recepty"
set "cesta=%cesta:\=/%"
echo "%cesta%"

Re: Dávkový súbor - jak nastavit ako ciel adresar neaktivneho panela?

Posted: 27 Feb 2021, 21:43
by SelfMan
Len tak pre zvedavost, preco je potrebne otacat lomitka? Pod windows su "/" pouzivane pre parametre vykonatelnych suborov.

Re: Dávkový súbor - jak nastavit ako ciel adresar neaktivneho panela?

Posted: 28 Feb 2021, 15:17
by tukanos
SelfMan wrote: 27 Feb 2021, 21:43 Len tak pre zvedavost, preco je potrebne otacat lomitka? Pod windows su "/" pouzivane pre parametre vykonatelnych suborov.
Odhadoval bych, že to bude kvůli mkvmerge, což je součástí balíku MKVToolNix, což je původně *nixový nástroj a potřebuje cesty opačně. Jsou další programy co to potřebují jako jsou MSYS2, atd.

Re: Dávkový súbor - jak nastavit ako ciel adresar neaktivneho panela?

Posted: 01 Mar 2021, 00:36
by SelfMan
tukanos wrote: 28 Feb 2021, 15:17 Odhadoval bych, že to bude kvůli mkvmerge, což je součástí balíku MKVToolNix, což je původně *nixový nástroj a potřebuje cesty opačně.
Tohoto som si vedomy, len som chel vediet dovod autora prispevku. Osobne preferujem WinMerge, ktory ma zatie roky nesklamal ani raz. Hoci uz bol na vyhynutie, komunita ho opat prebrala k zivotu. Pritom bonus je, ze program je aj v cestine i slovencine.

Re: Dávkový súbor - jak nastavit ako ciel adresar neaktivneho panela?

Posted: 01 Mar 2021, 09:44
by tukanos
SelfMan wrote: 01 Mar 2021, 00:36
tukanos wrote: 28 Feb 2021, 15:17 Odhadoval bych, že to bude kvůli mkvmerge, což je součástí balíku MKVToolNix, což je původně *nixový nástroj a potřebuje cesty opačně.
Tohoto som si vedomy, len som chel vediet dovod autora prispevku. Osobne preferujem WinMerge, ktory ma zatie roky nesklamal ani raz. Hoci uz bol na vyhynutie, komunita ho opat prebrala k zivotu. Pritom bonus je, ze program je aj v cestine i slovencine.
Aha :), to jsme se nepochopili. Ano, WinMerge je výborný nástroj, který většinou dostačuje. Mohu ho také s klidným svědomím doporučit.

Já jsem postupem času zjistil, že by se mě hodilo (t.j. ušetří mě to čas) něco navíc jako 3-way merge, porovnání registrů, rozdíly ve fotkách, vytváření patchů, atd. takže jsem si nakonec koupil Beyond compare od scooter software

Re: Dávkový súbor - jak nastavit ako ciel adresar neaktivneho panela?

Posted: 03 Mar 2021, 20:56
by AD7
Ďakujem.