Компьютерный форум 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=156512)

boss911 10-11-2009 01:53 1266262

Присвоить атрибуты файлу/папке через скрипт
 
Похожая тема уже есть, но она для CMD/BAT, а мне нужен VBS/WSH/JS.

Помогите, пожалуйста, сделать скрипт, который бы присваивал определенной папке, например, эта папка будет в "%ProgramFiles%", атрибут 'Скрытый'. Только самой папке, а не всем вложенным файлам\папкам в ней. Задача такова, что бы иметь один файл, который бы при запуске ничего не показывал, иначе бы без раздумий давно сделал бы скрипт на CMD. Зарание спасибо.

amel27 10-11-2009 03:43 1266301

Цитата:

Цитата boss911
скрипт, который бы присваивал определенной папке, например, эта папка будет в "%ProgramFiles%", атрибут 'Скрытый'. »

Код:

strDIR = "C:\Program Files\Microsoft.NET"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objDIR = objFSO.GetFolder(strDIR)

objDIR.Attributes = 2

полный список атрибутов: http://msdn.microsoft.com/en-us/libr...43(VS.85).aspx

boss911 10-11-2009 04:19 1266308

amel27, стоп, а переменные, что нельзя указывать? Кричит, что неверный путь, у-у-у, это очень плохо, не интересно тогда. Как будет выглядеть скрипт, если мне двум разным папкам надо задать атрибут, а так же как будет выглядеть скрипт, если обеим файлам нужно задать разные атрибуты.

amel27 10-11-2009 05:48 1266324

boss911, где-то так:
Код:

Set objShell = WScript.CreateObject("WScript.Shell")

strPrograms = objShell.ExpandEnvironmentStrings("%ProgramFiles%")
strWinDir  = objShell.ExpandEnvironmentStrings("%WinDir%")

AttribFolder strPrograms & "\Microsoft.NET", 2
AttribFolder strPrograms & "\Microsoft Office", 2

AttribFile strWinDir & "\regedit.exe", 2
AttribFile strWinDir & "\winhelp.exe", 2

'--------------------------
'Пользовательские процедуры
'--------------------------
Sub AttribFolder(strPath, intAttrib)
  Dim objFSO, objDIR

  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objDIR = objFSO.GetFolder(strPath)

  objDIR.Attributes = intAttrib
End Sub
'--------------------------
Sub AttribFile(strPath, intAttrib)
  Dim objFSO, objFLE

  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFLE = objFSO.GetFile(strPath)

  objFLE.Attributes = intAttrib
End Sub
'--------------------------


Iska 10-11-2009 06:19 1266329

boss911, можно и переменные окружения, только надо их дополнительно «развернуть». По приведённому в #2 коду:
Код:

strDIR = "%ProgramFiles%\Microsoft.NET"

Set objFSO      = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")

Set objFolder = objFSO.GetFolder(objWshShell.ExpandEnvironmentStrings(strDIR))

objFolder.Attributes = 2

Или указывать имя каталога как аргумент при вызове скрипта:
Код:

Option Explicit

Dim objArgs
Dim objFSO
Dim strFolder, lngErrLevel

Set objArgs = WScript.Arguments

If objArgs.Count = 1 Then
        strFolder = objArgs.Item(0)
       
        Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
       
        If objFSO.FolderExists(objFSO.GetAbsolutePathName(strFolder)) Then
                objFSO.GetFolder(strFolder).Attributes = 2
                lngErrLevel = 0
        Else
                lngErrLevel = 2
        End If
       
        Set objFSO = Nothing
Else
        lngErrLevel = 1
End If

Set objArgs = Nothing

WScript.Quit lngErrLevel

например:
Код:

wscript.exe "C:\Песочница\34\Sample.vbs" "%ProgramFiles%\Microsoft.NET"
Ежели потребно, в вызывающей программе можно анализировать код возврата (можно убрать — приведено только в качестве примера).


Время: 16:01.

Время: 16:01.
© OSzone.net 2001-