Тема: CMD/BAT: Смена переменных окружения всем пользователям
Написал следующий скрипт, которым хочу на ПК с WinXP и наличием раздела D переписать на него пользовательские и системные темпы:
setlocal enableDelayedExpansion
@echo off
IF EXIST d:\.. (
for /f "skip=4 delims=" %%u in ('Reg Query "HKEY_USERS" ^| findstr /v Classes') do (
for /f "skip=2 tokens=3" %%e in ('Reg Query "%%u\Environment" /v TMP ^| findstr /i /v D:\Temp') do (
reg add "%%u\Environment" /v TMP /t REG_EXPAND_SZ /d D:\Temp /f
)
for /f "skip=2 tokens=3" %%e in ('Reg Query "%%u\Environment" /v TEMP ^| findstr /i /v D:\Temp') do (
reg add "%%u\Environment" /v TEMP /t REG_EXPAND_SZ /d D:\Temp /f
)
)
for /f "skip=2 tokens=3" %%a in ('Reg Query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v TMP ^| findstr /i /v D:\Temp') do (
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment /v TMP /t REG_SZ /d D:\Temp /f
)
for /f "skip=2 tokens=3" %%a in ('Reg Query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v TEMP ^| findstr /i /v D:\Temp') do (
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment /v TEMP /t REG_SZ /d D:\Temp /f
)
)
Вложенные циклы использовал для того, чтобы не перезаписывать уже исправленные ключи.
Но при выполнении скрипт выдаёт следующее:
Не удается найти файл 'Reg Query HKEY_USERS\.DEFAULT\Environment /v TMP | findstr /i /v D:\Temp'.
Не удается найти файл 'Reg Query "HKEY_USERS\.DEFAULT\Environment" /v TEMP | findstr /i /v D:\Temp'.
Не удается найти файл 'Reg Query HKEY_USERS\S-1-5-19\Environment /v TMP | findstr /i /v D:\Temp'.
Не удается найти файл 'Reg Query "HKEY_USERS\S-1-5-19\Environment" /v TEMP | findstr /i /v D:\Temp'.
Не удается найти файл 'Reg Query HKEY_USERS\S-1-5-20\Environment /v TMP | findstr /i /v D:\Temp'.
Не удается найти файл 'Reg Query "HKEY_USERS\S-1-5-20\Environment" /v TEMP | findstr /i /v D:\Temp'.
Не удается найти файл 'Reg Query HKEY_USERS\S-1-5-21-117609710-725345543-1801674531-500\Environment /v TMP | findstr /i /v D:\Temp'.
Не удается найти файл 'Reg Query "HKEY_USERS\S-1-5-21-117609710-725345543-1801674531-500\Environment" /v TEMP | findstr /i /v D:\Temp'.
Не удается найти файл 'Reg Query HKEY_USERS\S-1-5-18\Environment /v TMP | findstr /i /v D:\Temp'.
Не удается найти файл 'Reg Query "HKEY_USERS\S-1-5-18\Environment" /v TEMP | findstr /i /v D:\Temp'.
Игрался с кавычками - не помогло, больше ничего придумать не могу!
В чём моя ошибка?
И ещё вопрос: нет ли более корректного в cmd способа проверки существования логического диска?
Потому как при использовании "IF EXIST d:\..", если будет вставлена флешка или диск в привод с этой буквой, то условие выполнится, а нужно - чтобы срабатывало только на локальные логические диски!