- A pasta em que o lote reside pode ser obtida com
%~dp0
(com uma barra invertida à direita) - O sistema de arquivos cuida das pastas relativas endereçadas com
..
, ou seja, um nível acima.
Em tree A: /F
assim:
A:.
└───Folder 1
├───BATCHES
│ batch1.bat
│
├───FILES
│ myfile.x
│
├───PROGRAMS
│ pro.exe
│
└───SCRIPT
script.srpt
este lote:
:: A:\FOLDER 1\BATCHES\batch1.bat
@Echo off
Echo batch1 folder is: %~dp0
Echo ======================
for %%A in ("%~dp0..\PROGRAMS\pro.exe") Do set "_Prg=%%~fA"
for %%A in ("%~dp0..\SCRIPT\script.srpt") Do set "_Inp=%%~fA"
for %%A in ("%~dp0..\FILES\myfile.x") Do set "_Out=%%~fA"
Set _
Echo "%_Prg%" --input "%_Inp%" --output "%_Out%"
terá esta saída:
A:\> "Folder 1\BATCHES\batch1.bat"
batch1 folder is: A:\Folder 1\BATCHES\
======================
_Inp=A:\Folder 1\SCRIPT\script.srpt
_Out=A:\Folder 1\FILES\myfile.x
_Prg=A:\Folder 1\PROGRAMS\pro.exe
"A:\Folder 1\PROGRAMS\pro.exe" --input "A:\Folder 1\SCRIPT\script.srpt" --output "A:\Folder 1\FILES\myfile.x"