Войти

Показать полную графическую версию : Проверка файлов по сети


-Lesnik-
28-02-2013, 14:20
Доброго времени суток)
Задача такая: есть список файлов разбросанных по сети. Нужно найти их и записать в файл время изменения.

Пока у меня получилось такое:
config.txt - тут лежит список файлов, причем путь к файлу и имя файла разделяются запятой.
Для файлов может применяться маска.


for /f "tokens=1,2* delims=," %%i in (config.txt) do (

set filename=
for /f "delims=" %%k in ('dir/b/a-d/o:-d "%%i%%j"') do (

set filename=!filename!%%k

)
echo "%filename%"
)

В результате имею:

"Контрольный протокол.xls"
"Контрольный протокол.xls"
"Контрольный протокол.xls"
"Контрольный протокол.xls"
Значение %filename% не меняется.

Где я не прав?

zion87
28-02-2013, 17:42
dir/b/a-d/o:-d "%%i%%j »
а что такое %%j?

-Lesnik-
01-03-2013, 09:28
Забыл указать - по маске надо найти самый свежий файл в каталоге.

%%i - это каталог
%%j - имя файла

В конфиг.тхт примерно такое:
\\server\path\to\file\,*.txt

Разделитель - запятая.

Возможно, это усложнение. Но после поиска самого свежего файла, у меня на руках только имя файла. Таким образом, храню путь до каталога.
То есть следующее действие - через for взять время создания %%i%filename%.
Но значение filename не меняется.

-Lesnik-
01-03-2013, 11:18
setlocal enabledelayedexpansion

for /f "tokens=1,2* delims=," %%i in (config.txt) do (

pushd %%i
for /f "delims=" %%k in ('dir/b/a-d/o:d "%%j"') do (
for /f %%a in ("%%~tk") do (
set data=%%a
)
)
popd
echo %%i%%j !data!
)
Хех, вроде то, что надо)




© OSzone.net 2001-2012