Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
kostet31
0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 9
1

Батник по условию операционной системы

10.10.2014, 07:46. Просмотров 950. Ответов 16
Метки нет (Все метки)

Добрый день уважаемые! Имеем следующее решение:
Bash
1
xcopy "Z:\IT\JABBER" "C:\Program Files\JABBER" /S /E /I
______________________________________________
xcopy "Z:\IT\base\Jabber" "%SYSTEMDRIVE%\Users\%USERNAME%\AppData\Roaming\Jabber" /S /E /I (win7)
xcopy "Z:\IT\base\Jabber" "%SYSTEMDRIVE%\Documents and Settings\%USERNAME%\Application Data\Jabber" /S /E /I (winxp)
Нужно чтобы в зависимости от операционной системы файлы копировались в соответствующие пути, уже всю голову сломал, как это реализовать. И второстепенная задача создать ярлык из папки C:\Program Files\JABBER\miranda32.exe в автозагрузку пользователя также с учетом операционной системы, т.к пути до этой папки разные. Заранее благодарю!
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2014, 07:46
Ответы с готовыми решениями:

Минимальные права доступа для загрузки операционной системы
Указать минимальный набор разрешений (прав доступа) необходимых для загрузки...

Создание каталога с именем версии текущей операционной системы
Здравствуйте. Помогите пожалуйста,кто-нибудь из знающих людей. Буду очень...

Вовлечение операционной системы в управление вводом-выводом. Что это?
Дали вопросы к зачету. Не могу разобраться. Объясните пожалуйста, если не...

Батник для проверки доступа к инету и перезагрузки системы, если инета нет
Скрипт который осуществляет проверку доступности сети интернет и в случае если...

Выполнение утилиты ATTRIB из состава операционной системы MS-DOS или Windows для заданного файла...
Ребят, начинаю работать с элементами dos, собственно маленькое задание -...

16
ComSpec
3407 / 1951 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
10.10.2014, 10:09 2
Цитата Сообщение от kostet31 Посмотреть сообщение
xcopy "Z:\IT\base\Jabber" "%SYSTEMDRIVE%\Users\%USERNAME%\AppData\Roaming\Jabber" /S /E /I (win7)
xcopy "Z:\IT\base\Jabber" "%SYSTEMDRIVE%\Documents and Settings\%USERNAME%\Application Data\Jabber" /S /E /I (winxp)
kostet31,
Bash
1
xcopy "Z:\IT\base\Jabber" "%APPDATA%\Jabber" /s /e /i
для любой ОС (по крайней мере, начиная с Windows XP).

Добавлено через 1 час 16 минут
Цитата Сообщение от kostet31 Посмотреть сообщение
И второстепенная задача создать ярлык из папки C:\Program Files\JABBER\miranda32.exe в автозагрузку пользователя также с учетом операционной системы, т.к пути до этой папки разные.

Bash
1
2
3
4
5
6
7
8
9
10
11
@set @x=0 /*& echo off
 
set "target=%ProgramFiles%\JABBER\miranda32.exe"
set "directory=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup"
 
for %%i in ("%target%") do set shortcut=%%~ni.lnk
cscript //nologo //e:javascript "%~f0" "%directory:\=\\%\\%shortcut%" "%target:\=\\%"
 
exit /b */
 
var x=new ActiveXObject('WScript.Shell').CreateShortcut(WScript.Arguments(0));x.TargetPath=WScript.Arguments(1);x.Save();
2
kostet31
0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 9
10.10.2014, 14:27  [ТС] 3
Добавлено через 13 минут
Сейчас проверил на windows xp, там к сожалению ярлык не создает(Не удается сохранить ярлык и путь) в windows7 пишет Ошибка компиляции Microsoft JScript: Предполагается наличие ';' но ярлык создается. В чем может быть проблема?

Добавлено через 12 минут
По пути C:\Documents and Settings\Администратор\Application Data\Microsoft\Windows в XP отсутствует папка "start menu" от этого видимо и ошибка. Как можно скорректировать скрипт чтобы в XP тоже создавал ярлык в автозагрузку, там путь такой: C:\Documents and Settings\Администратор\Главное меню\Программы\Автозагрузка.
Спасибо.
0
ComSpec
3407 / 1951 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
10.10.2014, 16:21 4
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@set @x=0 /*& echo off
 
chcp 1251>nul
 
set "target=%ProgramFiles%\JABBER\miranda32.exe"
set "directory=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup"
if not exist "%directory%" set "directory=%APPDATA%\Microsoft\Windows\Главное меню\Программы\Автозагрузка"
 
for %%i in ("%target%") do set shortcut=%%~ni.lnk
cscript //nologo //e:javascript "%~f0" "%directory:\=\\%\\%shortcut%" "%target:\=\\%"
 
exit /b */
 
var x=new ActiveXObject('WScript.Shell').CreateShortcut(WScript.Arguments(0));x.TargetPath=WScript.Arguments(1);x.Save();
1
kostet31
0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 9
10.10.2014, 18:24  [ТС] 5
В winXP по прежнему не создает ярлык т.к в последнем вашем решении указан путь %APPDATA%\Microsoft\Windows\ но там нет папки Главное меню. Пробовал сделать так: %SYSTEMDRIVE%\Documents and Settings\%USERNAME%\Главное меню\Программы\Автозагрузка тоже не получилось почему то, хотя должно работать. Пишет "...." каракули, и дальше не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
0
ComSpec
3407 / 1951 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
10.10.2014, 18:40 6
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@set @x=0 /*& echo off
 
chcp 1251>nul
 
set "target=%ProgramFiles%\JABBER\miranda32.exe"
set "directory=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup"
if not exist "%directory%" set "directory=%USERPROFILE%\Главное меню\Программы\Автозагрузка"
 
for %%i in ("%target%") do set shortcut=%%~ni.lnk
cscript //nologo //e:javascript "%~f0" "%directory:\=\\%\\%shortcut%" "%target:\=\\%"
 
exit /b */
 
var x=new ActiveXObject('WScript.Shell').CreateShortcut(WScript.Arguments(0));x.TargetPath=WScript.Arguments(1);x.Save();
0
kostet31
0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 9
10.10.2014, 19:50  [ТС] 7
Не получается ошибка во вложении.
0
Миниатюры
Батник по условию операционной системы  
kostet31
0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 9
10.10.2014, 20:05  [ТС] 8
Извиняюсь, отсутствовал exe в папке, вложение не актуально, но вот в xp опять почему то на путь ругается, может беда в кирилических названиях пути?
0
ComSpec
3407 / 1951 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
10.10.2014, 20:13 9
kostet31, как Вы "умудрились" сохранить пакетный файл в Юникоде? Пересохраните в ANSI!
1
Smitis
1629 / 338 / 39
Регистрация: 15.10.2012
Сообщений: 530
10.10.2014, 20:33 10
ComSpec
А не лучше ли использовать для определения папки автозагрузки
ActiveXObject('WScript.Shell').SpecialFolders("Startup") );
0
ComSpec
3407 / 1951 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
10.10.2014, 20:44 11
Smitis, наверное, лучше, но задание переменных униврсальнее.
0
Smitis
1629 / 338 / 39
Регистрация: 15.10.2012
Сообщений: 530
10.10.2014, 21:57 12
Цитата Сообщение от ComSpec Посмотреть сообщение
set "directory=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup" if not exist "%directory%" set "directory=%USERPROFILE%\Главное меню\Программы\Автозагрузка"
Как же это может быть универсальнее, если привязано к языку системы и не учитывает маловероятную, но тем не менее существующую возможность настройки профиля на другие пути?
2
kostet31
0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 9
11.10.2014, 08:16  [ТС] 13
Спасибо, поправил кодировку и все заработало! Еще раз всем спасибо, очень мне помогли!

Добавлено через 1 минуту
Как же это может быть универсальнее, если привязано к языку системы и не учитывает маловероятную, но тем не менее существующую возможность настройки профиля на другие пути?
Не могли бы вы поделиться вашим решением, многим было бы очень полезно, в том числе и мне.

Добавлено через 15 минут
Ярлык то теперь создает, но вот все вместе в одном батнике ярлык не создает почему то. Сейчас все это имеет вот такой вид:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
chcp 1251
    IF EXIST "%programfiles%\Jabber\Plugins\quicksearch.dll" GOTO :EOF
    xcopy /Q /E /H /R /Y "Z:\IT\JABBER" "%programfiles%\Jabber\"
        IF EXIST "%APPDATA%\JABBER\Jabber.dat" GOTO PROFILEOK
        xcopy /Y /I /E "Z:\IT\base\Jabber" "%APPDATA%\Jabber\"
        :OK
        start "" "%programfiles%\Jabber\miranda32.exe"
 
@@set @x=0 /*& echo off
 
chcp 1251>nul
 
set "target=%ProgramFiles%\JABBER\miranda32.exe"
set "directory=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup"
if not exist "%directory%" set "directory=%USERPROFILE%\Главное меню\Программы\Автозагрузка"
 
for %%i in ("%target%") do set shortcut=%%~ni.lnk
cscript //nologo //e:javascript "%~f0" "%directory:\=\\%\\%shortcut%" "%target:\=\\%"
 
exit /b */
 
var x=new ActiveXObject('WScript.Shell').CreateShortcut(WScript.Arguments(0));x.TargetPath=WScript.Arguments(1);x.Save();
0
ComSpec
3407 / 1951 / 628
Регистрация: 26.02.2014
Сообщений: 1,457
11.10.2014, 08:49 14
Лучший ответ Сообщение было отмечено kostet31 как решение

Решение

Цитата Сообщение от kostet31 Посмотреть сообщение
все вместе в одном батнике


Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@set @x=0 /*& echo off
 
chcp 1251>nul
 
set "target=%ProgramFiles%\JABBER\miranda32.exe"
set "directory=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup"
if not exist "%directory%" set "directory=%USERPROFILE%\Главное меню\Программы\Автозагрузка"
 
if exist "%ProgramFiles%\Jabber\Plugins\quicksearch.dll" goto :eof
xcopy /q /e /h /r /y "Z:\IT\JABBER" "%ProgramFiles%\Jabber\"
if exist "%APPDATA%\JABBER\Jabber.dat" goto PROFILEOK
xcopy /y /i /e "Z:\IT\base\Jabber" "%APPDATA%\Jabber\"
 
 
:PROFILEOK
 
start "" "%target%"
 
for %%i in ("%target%") do set shortcut=%%~ni.lnk
cscript //nologo //e:javascript "%~f0" "%directory:\=\\%\\%shortcut%" "%target:\=\\%"
 
exit /b */
 
var x=new ActiveXObject('WScript.Shell').CreateShortcut(WScript.Arguments(0));x.TargetPath=WScript.Arguments(1);x.Save();
2
kostet31
0 / 0 / 0
Регистрация: 10.10.2014
Сообщений: 9
11.10.2014, 09:20  [ТС] 15
Вопрос решен, спасибо!
0
Rollback
0 / 0 / 0
Регистрация: 14.10.2014
Сообщений: 2
14.10.2014, 20:39 16
Ребята! Всем СВМ - Thank you very much ! И за заданный вопрос и особенно за ответы! То, что делал месяц назад через nncron с 8 задачами для похожего ((( оказалось так просто решаемым! P.S. Batch (CMD/BAT) - прост и надёжен, как автомат "калашникова"
0
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,909
Записей в блоге: 16
15.10.2014, 10:49 17
Rollback, там не только Batch, но и JScript используется.
0
15.10.2014, 10:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2014, 10:49

Как сделать так, чтобы батник запускал батник на другом компьютере по локальной сети?
Как сделать что бы батник запускал батник на другом компьютере по локальной...

Батник, который пингует указанный IP-адрес и в случае отсутствия пинга запускает другой батник и закрывается
Доброго времени суток, столкнулся с проблемой ... нужен батник который будет...

Просмотрите указанием SET системное окружение операционной системы, установленной на ваш компьютер и установите заданные маршруты поиска в системе.
Какие заданные маршруты?! ... не могу понять!?( напишите, пожалуйста какие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru