如何在没有命令提示符的情况下从文件中删除“系统文件”属性?

如何在没有命令提示符的情况下从文件中删除“系统文件”属性?

是否可以在不使用命令提示符的情况下删除文件的“系统”文件属性?基本上,我想这样做:

attrib "folder" -s
attrib "file" -s

无需使用命令提示符或批处理文件。Windows 资源管理器属性菜单允许您对隐藏和只读属性执行此操作,是否有办法使用系统属性执行此操作?

答案1

如果您想要通过上下文菜单执行某些操作,如果您经常尝试执行此操作,这里有一种方法可以节省您的时间:

创建批处理文件RemoveSysAttrib.bat

@echo off
attrib -s "%1%"

然后按照本指南将自定义应用程序添加到上下文菜单:如何将任何应用程序添加到 Windows 桌面右键单击菜单

然后,您可以使用批处理文件创建一个名为“删除系统属性”的菜单项,它就是用来执行此操作的。这样,您还可以创建一个脚本来重新添加该属性。让它适用于多个文件选择可能有点麻烦,但如果运气好的话,它会为每个选定的项目启动一次文件。您需要使用以下命令进行测试:

@echo off
echo %1%
pause

如果它将文件名作为属性 1、2、3 等提供,则必须循环遍历所有参数。如果提供了多个参数,则可以像这样递归调用脚本:

if NOT "%2%"=="" (
    for %%A in (%*) do (
        RemoveSysAttrib.bat "%%A"
    )
) else (
    attrib -s "%1%"
)

希望有帮助=)


回应 Synetech 的评论:

当您使用 时,如果设置了另一个,attrib它不会更改H或设置(它会说S不重置 XXXX 文件)。您需要删除(或设置)两者,然后将您不想修改的那个改回之前的状态。

我扩展了脚本以检查 Windows 7attrib命令报告的“H”属性。为了使其更通用,您需要检查更多子字符串位置,因为我预感到其他版本的情况有所不同。我现在手边没有其他版本的 Windows,所以我无法检查。

@echo off
setlocal enabledelayedexpansion

:: Check if file is hidden - works on Windows 7
set hidden=0
for /f "delims=" %%A in ('attrib "%1%"') do (
    set attr=%%A
    if "!attr:~4,1!"=="H" set hidden=1
)

:: If file is hidden, remove both attributes, then hide again.
if %hidden%==1 (
    attrib -S -H "%1%"
    attrib +H "%1%"
) else (
    attrib -S "%1%"
)

endlocal

答案2

答案3

我又发现了两个程序:

属性改变器 -http://attribute-changer.software.informer.com/

文件属性剥离器 1.0 -http://www.softpedia.com/get/System/File-Management/File-Attribute-Stripper.shtml

前段时间我使用“RemoveR PRO”来自 -http://www.bigwig.net/softwaredesign/free.htm(现在链接失效了),也许你可以在一些档案中找到它

答案4

您可以使用属性菜单shell 扩展为文件和文件夹创建上下文菜单条目:

AttrMenu 上下文菜单的屏幕截图

相关内容