Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] определить userprofile для windows 7 и windows XP

Ответить
Настройки темы
CMD/BAT - [решено] определить userprofile для windows 7 и windows XP

Старожил


Сообщения: 226
Благодарности: 4

Профиль | Отправить PM | Цитировать


Добрый день.

Делаю архивацию pst файлов пользователей при выходе из системы следующим скриптом:

Код: Выделить весь код
Call \\server\pst\robocopy "%userprofile%" "\\server\pst\%username%" *.pst* /s /COPY:DAT /r:1 /w:1 /np /xo /eta
Скрипт сканирует всю личную папку профиля пользователя на предмет pst файлов. Выходит иногда очень долго. Хотелось бы что бы он сканировал только папку Outlook.
Для этого вместо "%userprofile% нужно вписать (Windows 7 пример) - "%userprofile%\AppData\Local\Microsoft\Outlook. Возможно, ли что бы скрипт проверял пути и подставлял правильный путь к Outlook с учётом ОС пользователя?

-------
Альтернатива Всему!


Отправлено: 14:55, 09-09-2011

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Основываясь на: Where does Microsoft Outlook 2010 save my information and configurations? - Outlook - Office.com и CMD/BAT: использование стандартных GUI-диалогов выбора папки и файла, можно попробовать так:
Код: Выделить весь код
@echo off
setlocal

for /f "tokens=2 delims=:" %%i in ('chcp') do (
	set sPrevCP=%%i
	chcp 1251 >nul
)

for /f "usebackq delims=" %%i in (
    `@"%systemroot%\system32\mshta.exe" "javascript:var objShellApp = new ActiveXObject('Shell.Application');var Folder = objShellApp.NameSpace('shell:Local AppData');try {new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(Folder.Self.Path)};catch (e){};close();" ^
    1^|more`
) do set sLocalAppData=%%i

chcp %sPrevCP% >nul

if defined sLocalAppData (
    set sMSOutlookDataFilesPath=%sLocalAppData%\Microsoft\Outlook

    if exist "!sMSOutlookDataFilesPath!" (
        echo !sMSOutlookDataFilesPath!
    ) else (
        echo Папка [!sMSOutlookDataFilesPath!] не найдена.
    )
) else (
    echo Папка [shell:Local AppData] не найдена.
)

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:45, 09-09-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 175
Благодарности: 119

Профиль | Отправить PM | Цитировать


Можно еще так попробовать искать (не проверял):
Код: Выделить весь код
for /f "delims=" %%a in ('dir "%userprofile%\Outlook" /b/s/ad ^| findstr /i/e "Outlook"') do set "OutlookDir=%%a"

Отправлено: 18:12, 09-09-2011 | #3


Старожил


Сообщения: 226
Благодарности: 4

Профиль | Отправить PM | Цитировать


Iska, почему то не работает. (

Но в данных случаях скрипт опять же будет искать, и тратить на это время.

Нельзя ли сделать так:

Код: Выделить весь код
Проверка системы

Если "проверка системы" = xp  тогда:

outlookdir = %userprofile%\Local Settings\Application Data\Microsoft\Outlook      \\ папка если xp

Иначе

outlookdir = %userprofile%\AppData\Local\Microsoft\Outlook \\ папка если win7
то есть что бы скрипт не искал папку Outloook, а определял только версию системы.

\\UPD. Спасибо Iska всё работает.

-------
Альтернатива Всему!


Последний раз редактировалось bombording, 12-09-2011 в 09:29.


Отправлено: 15:07, 10-09-2011 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата bombording:
Iska, почему то не работает. (
Ответ не очень содержательный. Опишите, что Вы делали, как делали, как определили, что «не работает». Что именно «не работает».

Цитата bombording:
Но в данных случаях скрипт опять же будет искать, и тратить на это время. »
Нет, «искать и тратить на это время» не будет. Делается попытка получить папку LocalAppData по символьному имени от Проводника. Затем к ней дописывается «Microsoft\Outlook» и проверяется, существует ли такая папка.

Отправлено: 17:35, 10-09-2011 | #5


Старожил


Сообщения: 175
Благодарности: 119

Профиль | Отправить PM | Цитировать


Цитата bombording:
Нельзя ли сделать так:
Проверка системы
Если "проверка системы" = xp тогда »
Код: Выделить весь код
for /f "skip=1 tokens=1-2 delims=." %%a in ('wmic os get version') do set "ver=%%a.%%b"
if %ver% equ 5.1 echo Windows XP
5.0 - Windows 2000
5.2 - Windows Server 2003
6.0 - Windows Vista или Windows Server 2008
6.1 - Windows 7 или Windows Server 2008 R2
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:13, 11-09-2011 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] определить userprofile для windows 7 и windows XP

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] ERD Commander, Windows 7 Recovery Disc (для Windows 7) medvedkovo Microsoft Windows 7 7 31-03-2011 22:56
Разное - [решено] Как определить последнюю версию Windows Live? Funtik123 Windows Live (архив) 4 23-05-2010 02:27
CMD/BAT - [решено] Как определить IP и записать его в переменную? (OS: Windows Vista) Voshal Скриптовые языки администрирования Windows 7 17-05-2010 11:43
Как определить производительности системы для Windows 2003? Ferum01 Microsoft Windows NT/2000/2003 2 05-11-2008 09:26
2008 - [решено] Редирект %USERPROFILE% в терминале Server 2008 V Telm Windows Server 2008/2008 R2 2 30-06-2008 17:51




 
Переход