Как удалить атрибут ReadOnly для файла с помощью PowerShell?
Как удалить атрибут ReadOnly для файла с помощью сценария PowerShell (версия 1.0)?
7 ответов
Ты можешь использовать Set-ItemProperty
:
Set-ItemProperty file.txt -name IsReadOnly -value $false
или короче:
sp file.txt IsReadOnly $false
$file = Get-Item "C:\Temp\Test.txt"
if ($file.attributes -band [system.IO.FileAttributes]::ReadOnly)
{
$file.attributes = $file.attributes -bxor [system.IO.FileAttributes]::ReadOnly
}
Приведенный выше фрагмент кода взят из этой статьи
ОБНОВЛЕНИЕ Используя реализацию Кейта Хилла из комментариев (я проверил это, и это работает), это становится:
$file = Get-Item "C:\Temp\Test.txt"
if ($file.IsReadOnly -eq $true)
{
$file.IsReadOnly = $false
}
Даже если это не Native PowerShell, для этого можно использовать простую команду Attrib:
attrib -R file.txt
Или вы можете просто использовать:
get-childitem *.cs -Recurse -File | % { $_.IsReadOnly=$false }
Выше будет работать для всех файлов.cs в поддереве текущей папки. Если вам нужны другие типы, просто настройте "*.cs" в соответствии с вашими потребностями.
Если вы используете расширения сообщества PowerShell:
PS> Set-Writable test.txt
PS> dir . -r *.cs | Set-Writable
# Using alias swr
PS> dir . -r *.cs | swr
Вы можете сделать наоборот так:
PS> dir . -r *.cs | Set-ReadOnly
# Using alias sro
PS> dir . -r *.cs | sro
Shell("net share sharefolder=c:\sharefolder/GRANT:Everyone,FULL")
Shell("net share sharefolder= c:\sharefolder/G:Everyone:F /SPEC B")
Shell("Icacls C:\sharefolder/grant Everyone:F /inheritance:e /T")
Shell("attrib -r +s C:\\sharefolder\*.* /s /d", AppWinStyle.Hide)
спасибо всем, кто помогает решить какую-то проблему... и помогает этому коду
этот код работает для меня.. чтобы поделиться папкой для каждого с разрешением на чтение и запись, вы можете использовать это в.net
Ни одно из приведенных выше решений не изменяет статус READONLY для папок и файлов, но этот сценарий PowerShell делает это на основе следующих команд powershell.
Запрос статуса READONLY для папки (через объект DirectoryInfo)
$roStatus = $dirInfo.Attributes -match 'ReadOnly'
Изменить статус READONLY для папки (через объект DirectoryInfo)
$dirInfo.Attributes += 'ReadOnly'
$dirInfo.Attributes -= 'ReadOnly'
Запрос состояния READONLY файла (используя имя файла)
$roStatus = Get-ItemPropertyValue -Path $strFileName -Name IsReadOnly
Изменить статус READONLY для файла (используя имя файла)
Set-ItemProperty -Path $strFileName -Name IsReadOnly -Value $false