Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   7zip+bat+переменные среды (http://forum.oszone.net/showthread.php?t=261961)

wiznv 06-06-2013 11:21 2163168

7zip+bat+переменные среды
 
Помогите доработать скрипт.

Цитата:

For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"^|Find /I "Personal"`) Do set Person=%%J
"C:\Program Files\7-Zip\7z.exe" a -t7z -ssw -mx1 -p12345 -scsWIN -mhe "\\10.10.10.10\User_backup$\User\Backup_mydoc.7z" -r %Person%
Пояснение:
ОС - windows XP.
У пользователей переназначен путь к папке Мои документы. Например С:\Ivanov. В связи с этим Путь
Цитата:

%USERPROFILE%\Мои документы
- не работает.
Есть параметр в реестре который отвечает за путь к переназнаенной папке. Скрипт этот путь считывает и присваивет переменной %Person%. Далее идет скрипт с ключами для архивации 7zip.

Проблема:
Вобщем, трюк с переменной сработал но частично - не архивируются вложенные папки. Я добавил %Person%\* - в этом случае переменная %Person% не читается и остается только \*. Кавычки не помогают...

Iska 06-06-2013 11:53 2163192

Можете ведь, коллега, если захотите ;).

Сама «корневая» папка «Мои документы» (в примере — «Ivanov») также добавляется в архив:
Код:

"C:\Program Files\7-Zip\7z.exe" a -t7z -ssw -mx1 -p12345 -scsWIN -mhe "\\10.10.10.10\User_backup$\User\Backup_mydoc.7z" -r "%Person%\"
«Корневая» папка «Мои документы» (в примере — «Ivanov») в архив не добавляется:
Код:

"C:\Program Files\7-Zip\7z.exe" a -t7z -ssw -mx1 -p12345 -scsWIN -mhe "\\10.10.10.10\User_backup$\User\Backup_mydoc.7z" -r "%Person%\*"
А Ваша проблема, как я понимаю, в том, что «reg.exe» выдаёт на выходе кириллицу в ANSI, а не в OEM. Отсюда и переменная окружения «Person» выглядит, например, так:
Код:

%USERPROFILE%\╠юш фюъєьхэЄ√
Попробуйте, например, так:
Код:

>nul chcp 1251
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"^|Find /I "Personal"`) Do set Person=%%J
>nul chcp 866
echo [%Person%]
"%ProgramFiles%\7-Zip\7z.exe" a -t7z -ssw -mx1 -p12345 -scsWIN -mhe "\\10.10.10.10\User_backup$\User\Backup_mydoc.7z" -r "%Person%\*"


Georgio 10-06-2013 23:46 2165614

wiznv, попробуйте в цикле сделать так:

Код:

For /F "UseBackQ Tokens=1,2*" %%I In (
`Reg Query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"^|Find /I "Personal"`
) Do (
 If %%I==Personal (
  Set Person=%%K
))

.


Время: 02:47.

Время: 02:47.
© OSzone.net 2001-