Цель расчета длины мне не ясна, но я бы предложил добавить звездочку после 1
в вашем for /f "tokens=1 delims=_"
.Затем вы получите «имя файла», которое искали через %%j
.
. Я проверил это так:
@echo off
setlocal EnableDelayedExpansion
set source=D:\Program Files\Somewhere
cd %source%
for /r %%i in (*.*) do (
for /f "tokens=1* delims=_" %%j in ( "%%~nxi" ) do (
echo partner: %%j
echo name: %%k
)
)
endlocal
Если вам не нужно проходить через подкаталоги:
@echo off
set source=D:\Program Files\Somewhere
for /f "tokens=1* delims=_" %%i in ( 'dir "%source%" /b /a-d' ) do (
echo partner: %%i
echo filename: %%j
)
dir /b /a-d
извлекает список содержимого каталога, кроме его подкаталогов:
D:\Program Files\Somewhere>dir /b /a-d
ZZTEST_123_456.txt
ABCDEF_890_FFF.doc
FOOBAR_567_@@@.zzz