Показать полную графическую версию : [решено] Присвоить атрибуты файлу/папке через скрипт
Похожая тема уже есть (http://forum.oszone.net/thread-138706.html), но она для CMD/BAT, а мне нужен VBS/WSH/JS.
Помогите, пожалуйста, сделать скрипт, который бы присваивал определенной папке, например, эта папка будет в "%ProgramFiles%", атрибут 'Скрытый'. Только самой папке, а не всем вложенным файлам\папкам в ней. Задача такова, что бы иметь один файл, который бы при запуске ничего не показывал, иначе бы без раздумий давно сделал бы скрипт на CMD. Зарание спасибо.
скрипт, который бы присваивал определенной папке, например, эта папка будет в "%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/library/5tx15443(VS.85).aspx
amel27, стоп, а переменные, что нельзя указывать? Кричит, что неверный путь, у-у-у, это очень плохо, не интересно тогда. Как будет выглядеть скрипт, если мне двум разным папкам надо задать атрибут, а так же как будет выглядеть скрипт, если обеим файлам нужно задать разные атрибуты.
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
'--------------------------
boss911, можно и переменные окружения, только надо их дополнительно «развернуть». По приведённому в #2 (http://forum.oszone.net/post-1266301-2.html) коду:
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"
Ежели потребно, в вызывающей программе можно анализировать код возврата (можно убрать — приведено только в качестве примера).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.