PDA

Показать полную графическую версию : [решено] Привязка к версии операционной системы в командной строке


defor6
14-10-2011, 13:38
День добрый.
Появилась необходимость написания батника, который будет удалять информацию о браузере GoogleChrome (для случая синхронизации настроек со своим аккаунтом на другом компьютере и последующем откате изменений).
Однако настройки хранятся в разных местах, в зависимости от версии ОС.
Так для Win7 это C:\Users\%Текущий пользователь%\AppData\Local\Google\Chrome\User Data\
Для WinXP C:\Documents and Setings\%Текущий пользователь%\Local Settings\Application Data\Google\Chrome\User Data\
Непосредственно для Win7 батник я уже написал, выглядит примерно так:

@echo off
title Удаление данных о Google Chrome c компьютера
taskkill /f /im chrome.exe
echo
echo Остановка и выгрузка из памяти всех процессов Chrome. Подождите...
ping -n 3 127.0.0.1 > NUL
rd /s /q "%USERPROFILE%\AppData\Local\Google\Chrome\User Data"
echo
echo Все данные успешно удалены, можно запустить девственно чистую версию браузера
ping -n 10 127.0.0.1 > NUL
exit


Отдельно для XP переписать этот код тоже не проблема, но хотелось бы унифицировать. Полазил по тырнету, поискал информацию, однако единственное, что нашел - команда 'ver'. В Win7 она возвращает значение 'Microsoft Windows [Version 6.1.7600]'. Вот ее я и пытался использовать для привязки к версии OC. На текущий момент код проверки выглядит так (все естественно временно-корявенько):

@echo off
rem Начинаем карусель
if ver = "Microsoft Windows [Version 6.1.7600]" goto Win7
pause
if ver <> "Microsoft Windows [Version 6.1.7600]"goto WinXP
pause
:win7
echo Версия виндовс =7
goto exitfile
:winXP Версия виндовс =XP
goto exitfile
:exitfile
pause


В этом случае возвращается ошибка : Непредвиденное появление: =.
Подумал и о том, чтобы взять ver в знаки процентов, как для переменных (%ver%), в это случает ошибка следующего вида: Непредвиденное появление: goto.

Отсюда и вытекает очевидный вопрос: может ли кто-нибудь помочь мне в унификации файлика. Спасибо заранее.

Morpheus
14-10-2011, 15:00
defor6, @Echo Off
Set w7=0
Ver | Find "6.1" >Nul && Set w7=1

If %w7%==1 (
Rem это Win7
Echo Windows 7
) Else (
Rem это не Win7
Echo Windows не 7
)

CMD/BAT - Определение ОС (http://forum.oszone.net/thread-207180.html)

Petya V4sechkin
14-10-2011, 15:16
rd /s /q "%USERPROFILE%\AppData\Local\Google\Chrome\User Data"
Можно сделать просто:
if exist "%USERPROFILE%\AppData\Local\Google\Chrome\User Data" rd /s /q "%USERPROFILE%\AppData\Local\Google\Chrome\User Data"
if exist "%USERPROFILE%\Local Settings\Application Data\Google\Chrome\User Data" rd /s /q "%USERPROFILE%\Local Settings\Application Data\Google\Chrome\User Data"

или усложнить, вытащив путь из реестра:
if not defined LocalAppData (
chcp 1251 >nul
for /f "tokens=3*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"^|find /i "Local AppData"') do set LocalAppData=%%b
chcp 866 >nul
)
if exist "%LocalAppData%\Google\Chrome\User Data" rd /s /q "%LocalAppData%\Google\Chrome\User Data"

defor6
14-10-2011, 15:20
Большое спасибо. Поиском я пытался найти все, что связано с "Командная строка" или просто "Командная". Про BAT и CMD как то не подумал.




© OSzone.net 2001-2012