Para responder a esta parte:
And this outputs the full directory, including the file name.
So my first problem is getting rid of the file name.
Em um arquivo de lote, você pode fazer
@echo off
:: locate 'myScripts.bat' and save its directory to 'myDir'
:: in case of multiple matches 'myDir' will be set to the last one
set "myDir="
for /f "delims=" %%x in ('dir /b /s myScripts.bat') do set "myDir=%%~dpx"
if not defined myDir echo not found ?? & exit /b 1
:: ready to use
echo myDir = "%myDir%"
Para obter uma melhor visualização dos arquivos em lote, recomendo que você leia a ajuda interna, começando com set /?
, if /?
, for /?
, call /?
.
[EDIT] Adicionada "delims="
para manipular caminhos com espaços corretamente.