PDA

Показать полную графическую версию : [решено] Раскрытие имени файла во вложеном For


dARKest
13-07-2009, 20:00
Подскажите как получить только имя файла

Есть структура директорий с базовой директорий d:\data
d:\data
d:\data\xml
d:\data\images
d:\data\html
(может быть любое количество на этом уровне)

Список директорий с которыми работаю храню D:\bin\download.ftp

xml
images
html





SetLocal EnableExtensions
SetLocal EnableDelayedExpansion

set $path_tools=D:\bin
set $local_data=D:\data
set $sleep_intervel=5m
set $download_path=D:\bin\download.ftp

rem читаю имя поддиректории из файла
for /f "eol=# tokens=1" %%i in (%$download_path%) do (

rem в этой поддиректории для всех файлов посчитать md5
for %%j in (%$local_data%\%%i\*.*) do (

rem Результат сохранить в %$local_data%\tmp\local\ИМЯ файла+.md5

%$path_tools%\md5sum.exe %%j > %$local_data%\tmp\local\%%i\ .md5
rem _____________________________________________________^^^
)

)

Или может во втором цикле сразу получать только имя файла и собирать путь к исходному?

amel27
14-07-2009, 08:39
dARKest, "FOR /?" - в самом конце справки поддерживаемые подстановки для файлов
%$path_tools%\md5sum.exe %%j >%$local_data%\tmp\local\%%i\%%~nj.md5

З.Ы. хорошая привычка - имена файлов брать в кавычки

dARKest
14-07-2009, 09:45
Самое интересноя я так пробовал. Что то не правильно в мелочах видимо у меня было....

А вообще можете популярно объяснить насчет когда используется %% вместо %

%$имя% и !имя!

У меня проблема с пониманием когда где какой формат использовать. Более того я использую смешаный и работает...

amel27
14-07-2009, 13:43
%%i - временные переменные циклов в батниках
%i - то же, но для ввода непосредственно из командной строки

%имя% - подстановка значения переменной "имя"
!имя! - то же самое, но внутри циклов для случая, когда значение переменной задается/меняется в течение цикла

Если в цикле вместо !имя! поставить %имя% - будет восстановлено значение ДО входа в цикл

dARKest
14-07-2009, 15:07
спасибо. !имя! %$имя% получается дают один и тот же результат.

amel27
14-07-2009, 15:43
!имя! %$имя% получается дают один и тот же результат »"имя" и "$имя" - разные переменные, опечатка?

dARKest
14-07-2009, 16:15
Заблуждался :) Спасибо за уточнение

dARKest
17-07-2009, 00:15
Спасибо. Закрыть




© OSzone.net 2001-2012