Я не думаю, что есть простой способ получить только последнюю часть из текущего пути в пакетном сценарии.
Но, если на вашем компьютере установлено sed , это становится относительно просто:
@echo off
cd /d %1
Title %~f1
for /F "usebackq delims=" %%i in (`"pwd | sed -e ""{s/.*\\//g}"""`) do dir %1 /b /l > %1\..\%%i.txt
Исправление: Ответ Alconja правильный. Очевидно, что с расширениями для пакетного скриптинга это возможно. (Теперь я тоже понимаю ~ f). Итак, вам больше не нужен sed, и это сводится к:
@echo off
cd /d %1
Title %~f1
for /F "usebackq delims=" %%i in (`pwd`) do dir %1 /b /l > %1\..\%%~ni.txt
Возможно, поскольку вы меняете каталог, вам не нужен% 1 в выходном пути или команда dir, и вы просто должны иметь возможность заменить% 1 на путь, поэтому вы можете попробовать (не проверено):
@echo off
cd /d %1
Title %~f1
dir /b /l > ..\%~n1.txt