![]() |
Проблема с пробелами в названии
День добрый!
Есть батник hash_lst1.cmd который высчитывает хеш-значения файлов по списку. Код:
@echo off Список файлов hash_expert.lst примерно такого содержания Код:
P:\keys\Наши эксперты\Новая Ляля.cfg Код:
@echo off Опытным путем выяснилось, что проблема в пробелах в названии папки и некоторых файлов которые указаны в hash_expert.lst (Типа P:\keys\Наши эксперты\Новая Ляля.cfg) Переименовать ни папку ни файл не предоставляется возможным. А отредактировать батник не могу так чтоб работал корректно. Подскажите что нужно изменить |
Если в адресе\имени файла присутствует пробел, то адресс\имя необходимо включать в кавычки
Цитата:
Код:
set dirLib="T:\Отдел расчетов\Процессы\Сеть\lib" |
Вот этот путь как раз не влияет, с таким путем все прекрасно работает. Проверено
Проблема в P:\keys\Наши эксперты\Новая Ляля.cfg Как я понимаю надо поменять что-то в hash_lst1.cmd |
Sat_Kelman, кодировка DOS-866
|
И не в кодировке проблема. Такая же проверка есть для других файлов и других папок, там все работает. Но там то нет пробелов в названии папки в списке.
Завтра приду на работу, попробую чтоб он на экран вывел какого файла он найти не может. Отсюда и танцевать будем. |
1. Попробуйте добавить:
Код:
for /f "delims=" %%i in (%hash_lst%) do … Было бы желательно объяснить назначение сиих действ, и что должно получаться в итоге. |
Назначение:
Есть сетевая папка P:\keys\Наши эксперты\. В нее складываются файлы конфигурации. Цель - проверка целостности этих файлов. Например изменили мы конфигурацию, или новый файл конфиг добавили, то создаем файл hash_expert.lst, в котором указаны полные пути к файлам целостность которых нужно контролировать. Далее запускаем файл hash_expert_set.cmd. Он запускает файл hash_lst1.cmd и передает ему что нужно хешировать. Файл hash_lst1.cmd берет каждый файл по полному пути из файла lst, и высчитывает его хеш, результат записывает в файл hash_expert.has. В итоге имеем файл hash_expert.has, в котором будут эталонные хеши файлов. А уже на сервере периодически запускается проверка, где хеш этих файлов сравнивается с эталонным, и если они не совпадают значит файл нарушен/подменен/удален/... и сообщается кому следует |
Изменил строчку вот так
Код:
for /F %%i in (%hash_lst%) do for %%f in ("%%i") do %%f ""P:\keys\Наши"" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. До первого пробела режет |
Запутанно… Впрочем, кто знает Вашу кухню.
Попробуйте так (предварительно сделав резервные копии исходных пакетных файлов): hash_expert_set.cmd Код:
@echo off Код:
@echo off |
Проблема решилась!!!
убрал кавычки в "%%f" for /F %%i in (%hash_lst%) do for %%f in ("%%i") do "%~dp0\hash3411" %%f hash3411.exe - понятия не имею что за программка. Работает в режиме командной строки, то есть запускается из батника, и она уже возвращает хэш. Сам в инете про нее искал, не нашел. Была до меня уже. |
Ребят как правильно прописать в батнике, что-бы происходило копирование файла с заменой если имя файла с пробелом?
|
Цитата:
|
Время: 18:23. |
Время: 18:23.
© OSzone.net 2001-