说明:
在Windows中,如果您右键单击文件夹/文件,则有一个只读复选框,我要一个命令从该复选框中删除该勾号。
稍微复杂一点:
我希望命令将所有子文件夹保存在名称为abc的文件夹(A)中,并从其中删除“只读”对勾及其所有内容
我在其他问题中也发现了这一点,但是没有成功将它们组合的好运
结构示例:
+---A
| +---B
| | +---abc
| | | | file1.txt <-- apply here ---
| | | | file2.txt <-- apply here ---
| | | | file3.txt <-- apply here ---
| | | | file4.txt <-- apply here ---
| | | | file4.txt <-- apply here ---
| | | +---d
| | | | | file1.txt <-- apply here ---
| | | | | file2.txt <-- apply here ---
| +---e
| | +---f
| | +---abc
| | | | file1.txt <-- apply here ---
| | | | file2.txt <-- apply here ---
| | | | file3.txt <-- apply here ---
| | | | file4.txt <-- apply here ---
etc
答案 0 :(得分:2)
这可以做到。
$folder = 'c:\test'
$MatchingSubfolders = Get-ChildItem -Path $folder -Directory 'abc' -Recurse
Foreach ($item in $MatchingSubfolders) {
Get-ChildItem -Path $item.FullName -File -Recurse | % {Set-ItemProperty $_.FullName -name IsReadOnly -value $false}
}
Set-ItemProperty
说明
Set-ItemProperty
cmdlet更改了 指定项目。您可以使用cmdlet建立或更改 项目的属性。例如,您可以使用Set-ItemProperty
进行设置 文件对象的IsReadOnly属性的值设置为$True
。您还可以使用
Set-ItemProperty
创建和更改注册表值,以及 数据。例如,您可以将新的注册表项添加到密钥,然后 建立或更改其价值。
Set-ItemProperty -Path C:\GroupFiles\final.doc -Name IsReadOnly -Value $true
答案 1 :(得分:2)
您可以使用它来查找显示目录中的所有文件:
std::allocator
并在文件名为父目录(-eq)'abc'的父目录中设置isReadOnly值off
您可以编写一个可能的函数,如下所示:
std::allocator<T>::rebind
答案 2 :(得分:1)
您可以使用Windows batch-file(请参阅所有说明性的rem
备注):
@echo off
rem /* Find sub-directories named `abc` and loop through them;
rem the root directory, hence the current one, is expected not to match: */
for /F "delims= eol=|" %%D in ('dir /B /S /A:D "abc"') do (
rem // Return all files in the currently iterated sub-directory:
for /F "delims= eol=|" %%F in ('dir /B /S /A:-D "%%D\*.*"') do (
rem // Do the attribute change at this point:
attrib -R "%%F"
)
)
要直接在Windows cmd命令行中使用该代码,必须对其进行更改(无注释):
for /F "delims= eol=|" %D in ('dir /B /S /A:D "abc"') do @for /F "delims= eol=|" %F in ('dir /B /S /A:-D "%D\*.*"') do @attrib -R "%%F"
答案 3 :(得分:1)
我同意PowerShell是一个不错的选择。这并不意味着旧的方法会停止工作。
FOR /F "delims=" %d IN ('DIR /S /B /A:D "C:\test" 2^>NUL') DO (
IF /I "%~nxd" == "abc" (ATTRIB -R "%~d" & ATTRIB -R "%~d\*")
)