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

Hlášení chyb a problémů programu Altap Salamander. Buďte, prosím, ve svých popisech co nejpodrobnější a vytvořte pro každý incident nový příspěvek. Nevkládejte programem generovaná hlášení o pádu programu, pošlete je e-mailem.
User avatar
AD7
Posts: 566
Joined: 28 Jan 2006, 16:21

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

Post 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
User avatar
SelfMan
Posts: 1142
Joined: 05 Apr 2006, 20:51
Contact:

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

Post 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 11055 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
User avatar
tukanos
Posts: 410
Joined: 21 Dec 2005, 19:14

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

Post 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.
Last edited by tukanos on 27 Feb 2021, 10:17, edited 1 time in total.
User avatar
SelfMan
Posts: 1142
Joined: 05 Apr 2006, 20:51
Contact:

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

Post 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
User avatar
tukanos
Posts: 410
Joined: 21 Dec 2005, 19:14

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

Post 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.
User avatar
SelfMan
Posts: 1142
Joined: 05 Apr 2006, 20:51
Contact:

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

Post by SelfMan »

👍 Myslim, ze autorovi prispevku sa to zide.
User avatar
AD7
Posts: 566
Joined: 28 Jan 2006, 16:21

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

Post 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?
User avatar
tukanos
Posts: 410
Joined: 21 Dec 2005, 19:14

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

Post 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%"
User avatar
SelfMan
Posts: 1142
Joined: 05 Apr 2006, 20:51
Contact:

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

Post by SelfMan »

Len tak pre zvedavost, preco je potrebne otacat lomitka? Pod windows su "/" pouzivane pre parametre vykonatelnych suborov.
User avatar
tukanos
Posts: 410
Joined: 21 Dec 2005, 19:14

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

Post 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.
User avatar
SelfMan
Posts: 1142
Joined: 05 Apr 2006, 20:51
Contact:

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

Post 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.
User avatar
tukanos
Posts: 410
Joined: 21 Dec 2005, 19:14

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

Post 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
User avatar
AD7
Posts: 566
Joined: 28 Jan 2006, 16:21

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

Post by AD7 »

Ďakujem.
Post Reply