CMD/BAT - 7zip+bat+переменные среды

Ответить
Аватара пользователя
wiznv

CMD/BAT - 7zip+bat+переменные среды

Сообщение wiznv »

Помогите доработать скрипт.




Цитата:



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

Re: CMD/BAT - 7zip+bat+переменные среды

Сообщение Iska »

Можете ведь, коллега, если захотите Изображение.



Сама «корневая» папка «Мои документы» (в примере — «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

Re: CMD/BAT - 7zip+bat+переменные среды

Сообщение Georgio »

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
))

.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»