|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проблема с пробелами в названии |
|
|
CMD/BAT - [решено] Проблема с пробелами в названии
|
Новый участник Сообщения: 34 |
День добрый!
Есть батник hash_lst1.cmd который высчитывает хеш-значения файлов по списку. @echo off rem Вычисление хэш-значений файлов по списку rem Вызов: hash_lst1 [file.lst] rem где, file.lst - список контролируемых файлов (по умолчанию - hash.lst) if empty%1==%1empty (set hash_lst=hash.lst) else set hash_lst=%1 for /F %%i in (%hash_lst%) do for %%f in ("%%i") do "%~dp0\hash3411" "%%f" Список файлов hash_expert.lst примерно такого содержания И собственно сам батник hash_expert_set.cmd который вызывается на сервере @echo off set dirLib=T:\Отдел расчетов\Процессы\Сеть\lib cd /d "%~dp0" call "%dirLib%\hash_lst1" hash_expert.lst > hash_expert.has echo %date% %time% Обновление списка целостности файлов hash_expert.lst. %username% %computername% >> hash_expert.log Опытным путем выяснилось, что проблема в пробелах в названии папки и некоторых файлов которые указаны в hash_expert.lst (Типа P:\keys\Наши эксперты\Новая Ляля.cfg) Переименовать ни папку ни файл не предоставляется возможным. А отредактировать батник не могу так чтоб работал корректно. Подскажите что нужно изменить |
|
Отправлено: 14:54, 30-03-2011 |
Пользователь Сообщения: 82
|
Профиль | Отправить PM | Цитировать Если в адресе\имени файла присутствует пробел, то адресс\имя необходимо включать в кавычки
Цитата Sat_Kelman:
|
|
Отправлено: 15:41, 30-03-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 34
|
Профиль | Отправить PM | Цитировать Вот этот путь как раз не влияет, с таким путем все прекрасно работает. Проверено
Проблема в P:\keys\Наши эксперты\Новая Ляля.cfg Как я понимаю надо поменять что-то в hash_lst1.cmd |
Отправлено: 15:48, 30-03-2011 | #3 |
Сообщения: 53537
|
Профиль | Отправить PM | Цитировать Sat_Kelman, кодировка DOS-866
|
Отправлено: 15:52, 30-03-2011 | #4 |
Новый участник Сообщения: 34
|
Профиль | Отправить PM | Цитировать И не в кодировке проблема. Такая же проверка есть для других файлов и других папок, там все работает. Но там то нет пробелов в названии папки в списке.
Завтра приду на работу, попробую чтоб он на экран вывел какого файла он найти не может. Отсюда и танцевать будем. |
|
Отправлено: 17:10, 30-03-2011 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать 1. Попробуйте добавить:
2. Убедиться, что кодировка «hash_expert.lst» — DOS-866. Было бы желательно объяснить назначение сиих действ, и что должно получаться в итоге. |
Отправлено: 20:00, 30-03-2011 | #6 |
Новый участник Сообщения: 34
|
Профиль | Отправить PM | Цитировать Назначение:
Есть сетевая папка P:\keys\Наши эксперты\. В нее складываются файлы конфигурации. Цель - проверка целостности этих файлов. Например изменили мы конфигурацию, или новый файл конфиг добавили, то создаем файл hash_expert.lst, в котором указаны полные пути к файлам целостность которых нужно контролировать. Далее запускаем файл hash_expert_set.cmd. Он запускает файл hash_lst1.cmd и передает ему что нужно хешировать. Файл hash_lst1.cmd берет каждый файл по полному пути из файла lst, и высчитывает его хеш, результат записывает в файл hash_expert.has. В итоге имеем файл hash_expert.has, в котором будут эталонные хеши файлов. А уже на сервере периодически запускается проверка, где хеш этих файлов сравнивается с эталонным, и если они не совпадают значит файл нарушен/подменен/удален/... и сообщается кому следует |
Отправлено: 20:20, 30-03-2011 | #7 |
Новый участник Сообщения: 34
|
Профиль | Отправить PM | Цитировать |
Отправлено: 06:44, 31-03-2011 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Запутанно… Впрочем, кто знает Вашу кухню.
Попробуйте так (предварительно сделав резервные копии исходных пакетных файлов): hash_expert_set.cmd @echo off set dirLib=T:\Отдел расчетов\Процессы\Сеть\lib cd /d "%~dp0" call "%dirLib%\hash_lst1" hash_expert.lst echo %date% %time% Обновление списка целостности файлов hash_expert.lst. %username% %computername% >> hash_expert.log @echo off rem Вычисление хэш-значений файлов по списку rem Вызов: hash_lst1 [file.lst] rem где, file.lst - список контролируемых файлов (по умолчанию - hash.lst) set hash_lst=%~1 if not defined hash_lst set hash_lst=hash.lst if exist "hash_expert.has" del /q /f "hash_expert.has" for /f "usebackq delims=" %%i in ("%hash_lst%") do ( "%~dp0\hash3411.exe" "%%i" >>hash_expert.has ) |
Отправлено: 06:59, 31-03-2011 | #9 |
Новый участник Сообщения: 34
|
Профиль | Отправить PM | Цитировать Проблема решилась!!!
убрал кавычки в "%%f" for /F %%i in (%hash_lst%) do for %%f in ("%%i") do "%~dp0\hash3411" %%f hash3411.exe - понятия не имею что за программка. Работает в режиме командной строки, то есть запускается из батника, и она уже возвращает хэш. Сам в инете про нее искал, не нашел. Была до меня уже. |
Отправлено: 07:40, 31-03-2011 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Пути с пробелами в кавычках как победить? | trn | Скриптовые языки администрирования Windows | 1 | 02-11-2010 12:32 | |
Любой язык - *.cmd: путь с пробелами | Vygov | Скриптовые языки администрирования Windows | 7 | 11-10-2010 13:57 | |
CMD/BAT - [решено] Путь с пробелами | Serezzza | Скриптовые языки администрирования Windows | 1 | 02-01-2010 19:34 | |
Проблемма с пробелами... | Vlad Drakula | Вебмастеру | 10 | 25-12-2004 03:09 | |
русские символы в названии машин | angeldragon | Сетевые технологии | 2 | 11-08-2004 18:33 |
|