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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] показать\скрыть расширения файлов в одном батнике? (http://forum.oszone.net/showthread.php?t=199873)

super_bitard 18-02-2011 19:25 1616464

показать\скрыть расширения файлов в одном батнике?
 
Есть два батника:

::показать расширения файлов
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 1616491

Код:

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 1616495

Держи, как ты и хотел, скрипт сначала смотрит, скрыты или отображаются расширения, а потом добавляет нужное значение в реестр.
Код:

@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 1616498

Вот скрипт на 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 1616744

два последних - отличные скрипты, сразу скопировал и работают,

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

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

amel27 19-02-2011 07:33 1616756

до кучи:
Код:

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 1616822

Ну тогда и мне позвольте для коллекции:
Код:

@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 1616913

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

amel27,
Красиво

super_bitard 19-02-2011 18:26 1617110

Ok
Ok


Время: 19:21.

Время: 19:21.
© OSzone.net 2001-