|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск файла в 2х дерикториях, сравнение версии и принятие решения |
|
|
CMD/BAT - [решено] Поиск файла в 2х дерикториях, сравнение версии и принятие решения
|
Старожил Сообщения: 290 |
Нужен скрипт, который будет искать исполняемый файл программы в C:\Program Files\%ProgrammName%\ и в С:\Users\%UserName%\appdata\roaming\%ProgrammName%\ ,
Если находится только 1 исполняемый файл - копирует дополнительные файлы из директории, где находится скрипт в директорию программы. Если находятся оба - проверяет версию и копирует файлы в папку с более новой версией программы. Такое возможно? |
|
Отправлено: 21:27, 06-09-2012 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Возможно.
|
Отправлено: 08:10, 07-09-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата Iska:
@Echo Off SetLocal Set ProgrammName=MyProgramName\program.exe If Not Exist "%ProgramFiles%\%ProgrammName%" If Not Exist "%APPDATA%\%ProgrammName%" Exit /B 1 If Exist "%ProgramFiles%\%ProgrammName%" If Not Exist "%APPDATA%\%ProgrammName%" ( :: Тут копируем файлы в %ProgramFiles% ) If Not Exist "%ProgramFiles%\%ProgrammName%" If Exist "%APPDATA%\%ProgrammName%" ( :: Тут копируем файлы в %APPDATA% ) If Exist "%ProgramFiles%\%ProgrammName%" If Exist "%APPDATA%\%ProgrammName%" ( Echo:Wscript.Echo CreateObject^("Scripting.FileSystemObject"^).GetFileVersion^(WScript.Arguments^(0^)^)>"%~n0_filever.vbs" For /F "Tokens=*" %%A In ('cscript //nologo "%~n0_filever.vbs" "%ProgramFiles%\%ProgrammName%"') Do ( For /F "Tokens=*" %%B In ('cscript //nologo "%~n0_filever.vbs" "%APPDATA%\%ProgrammName%"') Do ( :: Версия файла в %ProgramFiles% новее If "%%A" GTR "%%B" ( :: Копируем в %ProgramFiles% ) :: Версия файла в %APPDATA% новее If "%%B" GTR "%%A" ( :: Копируем в %APPDATA% ) ) ) Del /F /Q "%~n0_filever.vbs" 2>nul ) |
|
Отправлено: 11:02, 07-09-2012 | #3 |
Старожил Сообщения: 290
|
Профиль | Отправить PM | Цитировать El Sanchez, скорее всего я не правильно применил скрипт, но скрипет ничего не выполнил.
Меня интересует строка В части MyProgramName\program.exe мне нужно вписать папку с программой и название самого файла программы? Или нужно вместо %ProgrammName% прописать название папки с программой? В обоих случая не работает( |
Отправлено: 12:48, 09-09-2012 | #4 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата i-Lex:
Цитата i-Lex:
:: Тут копируем файлы в %ProgramFiles% :: Копируем в %ProgramFiles% Call XCopy /FYERH * "%ProgramFiles%\%%ProgrammName:%ProgrammName:*\=%=%%"&&Call Del /F /Q "%ProgramFiles%\%%ProgrammName:%ProgrammName:*\=%=%%%~0" :: Тут копируем файлы в %APPDATA% :: Копируем в %APPDATA% Call XCopy /FYERH * "%APPDATA%\%%ProgrammName:%ProgrammName:*\=%=%%"&&Call Del /F /Q "%APPDATA%\%%ProgrammName:%ProgrammName:*\=%=%%%~0" |
|||
Отправлено: 14:44, 09-09-2012 | #5 |
Старожил Сообщения: 290
|
Профиль | Отправить PM | Цитировать El Sanchez, тоесть я правильно понял, что всё это будет выглядеть вот так:
@Echo Off SetLocal Set ProgrammName=Lcx\lcx.exe If Not Exist "%ProgramFiles%\%ProgrammName%" If Not Exist "%APPDATA%\%ProgrammName%" Exit /B 1 If Exist "%ProgramFiles%\%ProgrammName%" If Not Exist "%APPDATA%\%ProgrammName%" ( :: Тут копируем файлы в %ProgramFiles% ) If Not Exist "%ProgramFiles%\%ProgrammName%" If Exist "%APPDATA%\%ProgrammName%" ( :: Тут копируем файлы в %APPDATA% ) If Exist "%ProgramFiles%\%ProgrammName%" If Exist "%APPDATA%\%ProgrammName%" ( Echo:Wscript.Echo CreateObject^("Scripting.FileSystemObject"^).GetFileVersion^(WScript.Arguments^(0^)^)>"%~n0_filever.vbs" For /F "Tokens=*" %%A In ('cscript //nologo "%~n0_filever.vbs" "%ProgramFiles%\%ProgrammName%"') Do ( For /F "Tokens=*" %%B In ('cscript //nologo "%~n0_filever.vbs" "%APPDATA%\%ProgrammName%"') Do ( :: Версия файла в %ProgramFiles% новее If "%%A" GTR "%%B" ( :: Копируем в %ProgramFiles% Call XCopy /FYERH * "%ProgramFiles%\%%ProgrammName:%ProgrammName:*\=%=%%"&&Call Del /F /Q "%ProgramFiles%\%%ProgrammName:%ProgrammName:*\=%=%%%~0" ) :: Версия файла в %APPDATA% новее If "%%B" GTR "%%A" ( :: Копируем в %APPDATA% Call XCopy /FYERH * "%APPDATA%\%%ProgrammName:%ProgrammName:*\=%=%%"&&Call Del /F /Q "%APPDATA%\%%ProgrammName:%ProgrammName:*\=%=%%%~0" ) ) ) Del /F /Q "%~n0_filever.vbs" 2>nul ) |
Отправлено: 19:58, 09-09-2012 | #6 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата i-Lex:
@Echo Off SetLocal Set ProgrammName=Lcx\lcx.exe If Not Exist "%ProgramFiles%\%ProgrammName%" If Not Exist "%APPDATA%\%ProgrammName%" Exit /B 1 If Exist "%ProgramFiles%\%ProgrammName%" If Not Exist "%APPDATA%\%ProgrammName%" ( :: Тут копируем файлы в %ProgramFiles% Call XCopy /FYERH * "%ProgramFiles%\%%ProgrammName:%ProgrammName:*\=%=%%"&&Call Del /F /Q "%ProgramFiles%\%%ProgrammName:%ProgrammName:*\=%=%%%~0" ) If Not Exist "%ProgramFiles%\%ProgrammName%" If Exist "%APPDATA%\%ProgrammName%" ( :: Тут копируем файлы в %APPDATA% Call XCopy /FYERH * "%APPDATA%\%%ProgrammName:%ProgrammName:*\=%=%%"&&Call Del /F /Q "%APPDATA%\%%ProgrammName:%ProgrammName:*\=%=%%%~0" ) If Exist "%ProgramFiles%\%ProgrammName%" If Exist "%APPDATA%\%ProgrammName%" ( Echo:Wscript.Echo CreateObject^("Scripting.FileSystemObject"^).GetFileVersion^(WScript.Arguments^(0^)^)>"%~n0_filever.vbs" For /F "Tokens=*" %%A In ('cscript //nologo "%~n0_filever.vbs" "%ProgramFiles%\%ProgrammName%"') Do ( For /F "Tokens=*" %%B In ('cscript //nologo "%~n0_filever.vbs" "%APPDATA%\%ProgrammName%"') Do ( :: Версия файла в %ProgramFiles% новее If "%%A" GTR "%%B" ( :: Копируем в %ProgramFiles% Call XCopy /FYERH * "%ProgramFiles%\%%ProgrammName:%ProgrammName:*\=%=%%"&&Call Del /F /Q "%ProgramFiles%\%%ProgrammName:%ProgrammName:*\=%=%%%~0" ) :: Версия файла в %APPDATA% новее If "%%B" GTR "%%A" ( :: Копируем в %APPDATA% Call XCopy /FYERH * "%APPDATA%\%%ProgrammName:%ProgrammName:*\=%=%%"&&Call Del /F /Q "%APPDATA%\%%ProgrammName:%ProgrammName:*\=%=%%%~0" ) ) ) Del /F /Q "%~n0_filever.vbs" 2>nul ) |
|
Отправлено: 20:43, 09-09-2012 | #7 |
Старожил Сообщения: 290
|
Профиль | Отправить PM | Цитировать Нер аботает(Вот что выдаёт.
|
Последний раз редактировалось i-Lex, 31-07-2013 в 06:36. Отправлено: 17:45, 10-09-2012 | #8 |
Старожил Сообщения: 290
|
Профиль | Отправить PM | Цитировать Ось ХРюша (если это важно)
|
Отправлено: 17:46, 10-09-2012 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать i-Lex, Вы в какой кодировке сохранили пакетный файл?!
|
Отправлено: 01:27, 11-09-2012 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] поиск и сравнение оригинального и резервной копии (.bak) одного и того же файла | takoff | Скриптовые языки администрирования Windows | 4 | 11-10-2011 07:32 | |
Route/Bridge - Сетевая задачка. Поиск оптимального решения | comoc | Сетевые технологии | 4 | 04-08-2011 18:11 | |
ATI поиск решения проблемы с HD2600PRO512 help!!! | Pasha86 | Видеокарты | 14 | 07-12-2009 19:46 | |
Сравнение новой версии любой программы с её актуализированным предшественником. | ILMF | Хочу все знать | 5 | 11-10-2006 17:29 |
|