Войти

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


super_bitard
18-02-2011, 19:25
Есть два батника:

::показать расширения файлов
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t REG_DWORD /d 00000000 /f

::скрыть расширения файлов
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t REG_DWORD /d 00000001 /f

Вопрос: возможно ли объединить два батника в один, т.е. при клике на нем, батник будет показывать расширения если они скрыты и будет скрывать расширения если они отображаются?

seriych
18-02-2011, 20:12
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"^|Find "HideFileExt"`) Do set /a key=%%J

if %key%==0 (
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t REG_DWORD /d 00000001 /f
) else (
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t REG_DWORD /d 00000000 /f
)

Anonymоus
18-02-2011, 20:17
Держи, как ты и хотел, скрипт сначала смотрит, скрыты или отображаются расширения, а потом добавляет нужное значение в реестр.

@Echo Off
Rem Получить текущее значение и изменить его
Reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt|Find "DWORD">query
For /F "tokens=1,2,3*" %%d In (query) Do Set isHidden=%%f&Del query
If "%isHidden%"=="0x0" (GoTo Hide) Else (GoTo Show)

Rem показать расширения файлов
:Show
Reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t REG_DWORD /d 00000000 /f
Exit
Rem скрыть расширения файлов
:Hide
Reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt /t REG_DWORD /d 00000001 /f
Exit


Не заметил, что уже выше seriych отписал, его вариант короче и лучше моего.
super_bitard, ты вишмастер на .bat что ли делаешь?

Ivan Bardeen
18-02-2011, 20:21
Вот скрипт на VBS

Const HKEY_CURRENT_USER = &H80000001
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
strValueName = "HideFileExt"
oReg.GetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

If dwValue = 0 Then
dwValue = 1
oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
Else
dwValue = 0
oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
End If

super_bitard
19-02-2011, 04:09
два последних - отличные скрипты, сразу скопировал и работают,

со скриптом от seriycha что-то не разобрался, выдает:

"_default.pifreg" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

amel27
19-02-2011, 07:33
до кучи:set "$0x0=00000001"& set "$0x1=00000000"& set "$R=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
for /f "tokens=3" %%a in ('reg query "%$R%" /v HideFileExt^|Find "REG_DWORD"') do call reg add "%$R%" /v HideFileExt /t REG_DWORD /d %%$%%a%% /f

SendMessage
19-02-2011, 10:19
Ну тогда и мне позвольте для коллекции:
@echo off
set "Key="HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v HideFileExt"
reg query %Key%|find "0x1"
reg add %Key% /t REG_DWORD /d %errorlevel% /f
Теперь уже точно на все вкусы есть решение. :)

Ivan Bardeen, не сочтите за критику. Так для памяти. Вместо такой конструкции:
If dwValue = 0 Then
dwValue = 1
oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
Else
dwValue = 0
oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
End If
Можно использовать в данном случае такую:
oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue Xor 1

seriych
19-02-2011, 12:50
Что-то не понял, что у меня неправильно, ибо у меня работает :)
Ну да ладно, благо есть из чего выбрать.

amel27,
Красиво

super_bitard
19-02-2011, 18:26
Ok
Ok




© OSzone.net 2001-2012