1

Тема: CMD/BAT: список файлов с относительным путем

Есть папка с подпапками и файлами, которые рассположены так как надо на TFTP сервере.
Но немогу выделить относительный путь этих файлов. в результате должно получиться вот так:
TFTP -i 192.168.1.127 PUT D:\Trans_data\WEB_data\css\style.css            css/style.css
TFTP -i 192.168.1.127 PUT D:\Trans_data\WEB_data\img\flags\ua.png        img/flags/ua.png
TFTP -i 192.168.1.127 PUT D:\Trans_data\WEB_data\img\flags\ru.png         img/flags/ru.png
TFTP -i 192.168.1.127 PUT D:\Trans_data\WEB_data\img\flags\gb.png         img/flags/gb.png
TFTP -i 192.168.1.127 PUT D:\Trans_data\WEB_data\img\flags\by.png         img/flags/by.png
TFTP -i 192.168.1.127 PUT D:\Trans_data\WEB_data\img\ke_logo_291x80.png   img/ke_logo_291x80.png
TFTP -i 192.168.1.127 PUT D:\Trans_data\WEB_data\img\ke.ico               img/ke.ico
TFTP -i 192.168.1.127 PUT D:\Trans_data\WEB_data\index.html               index.html
TFTP -i 192.168.1.127 PUT D:\Trans_data\WEB_data\bridge-0.2.js           bridge-0.2.js
TFTP -i 192.168.1.127 PUT D:\Trans_data\WEB_data\2.json                   2.json
TFTP -i 192.168.1.127 PUT D:\Trans_data\WEB_data\1.json                   1.json

т.е. bat-файл лежит в D:\Trans_data\ (в данном случае) , запустив его нужно найти все файлы в папке WEB_data и ее подпапках, а также относительные пути (относительно WEB_data) этих же файлов.
FOR и DIR с рекурсиями дают только полный путь, а относительный как сделать не врубаюсь!!!

2

Re: CMD/BAT: список файлов с относительным путем

@echo off
setlocal enabledelayedexpansion

set const_path=D:\Trans_data\WEB_data
set virt_disk=B:

subst %virt_disk% "%const_path%"|| exit /b

for /f "tokens=*" %%i in ('dir /a-d /b /s %virt_disk%\') do (
 set relat_path=%%~pnxi
 echo !relat_path:~1!
)

subst %virt_disk% /d
pause>nul
endlocal
exit /b

3

Re: CMD/BAT: список файлов с относительным путем

Спасибо!!!
С виртуальным диском мысль была, но ... не додумал
сейчас довел до такого:

for /f "tokens=*" %%i in ('dir /a-d /b /s %virt_disk%\') do (
 TFTP -i 192.168.1.127 PUT %%i %%~pnxi
)

а вот так

for /f "tokens=*" %%i in ('dir /a-d /b /s %virt_disk%\') do (
set relat_path=%%~pnxi
 TFTP -i 192.168.1.127 PUT %%i  !relat_path:~1!
) 

не заработало (хотя с echo работает)