web-dev-qa-db-ja.com

Windows 7で読み取り専用属性を再帰的に削除する方法

Windows 7では、コマンドラインを使用して、ディレクトリ下の全ファイルの読み取り専用属性を再帰的に削除する必要があります。これに関する例を教えてください。

64
Mert Nuhoglu

たとえば、ATTRIBコマンドを使用します。

attrib -r c:\folder\*.* /s

attribはコマンドです
-r is読み取り専用属性を削除するためのフラグ
c:\folder\*.*は、実行しているフォルダ、およびすべてのファイルのワイルドカードです。
/sはすべてのサブディレクトリとファイルを処理するためのフラグです

Attribコマンドの詳細なドキュメントと例を次に示します。 https://docs.Microsoft.com/ja-jp/windows-server/administration/windows-commands/attrib

78
Callen L

まず、コマンドプロンプトを開きます。次に、cdを使用して、属性の変更の適用を開始するディレクトリに移動します。最後に、次のコマンドを入力してください。

 attrib -R /S

現在のディレクトリ内のすべてのファイルから読み取り専用属性が削除され、すべてのサブディレクトリで同じことが行われます。

22
stderr

注:他の答えのほとんどはsystemまたはhidden属性が設定されているファイルでは機能しない-rのみを使用しています。

だからここに再帰的に読み取り専用の属性をディレクトリ内の all ファイルから削除するための解決策があります。

attrib -s -h -r "c:\path_to_folder\*.*" /s /d

説明:
-sシステム属性を削除します
-h隠し属性を削除します
-r読み取り専用属性を削除します/s現在のフォルダーおよびサブフォルダーを含む属性を設定または削除します/dフォルダーの属性も設定または削除します

7
Just Shadow

これを行うためにこのバッチファイルを作成しました。基本的に、このバッチファイルは、そのディレクトリ内、またはそのディレクトリ内のすべての下位ディレクトリ内の読み取り専用属性を消去します。誰かがその用途を見つけることを願っています。私はちょうど自分自身でバッチファイルを学び始めているので、「悪い」と思われるかもしれないどんなコードでも言い訳してください。

@ECHO off
:begin
ECHO Would you like to only remove read only attributes
ECHO from this director or from all the sub directores as
ECHO well?
ECHO.
ECHO [A] This directory only
ECHO [B] All directories - cascading
ECHO [C] Cancel
SET /P actionChoice="Option(A,B,C): "
ECHO.
IF "%actionChoice%" == "A" GOTO A
IF "%actionChoice%" == "B" GOTO B
IF "%actionChoice%" == "C" GOTO C
GOTO badChoice

:A
CLS
ECHO Are you sure you want to remove all read-only
ECHO attributes from this directory only?
ECHO.
ECHO Directory:
ECHO.
ECHO %CD%
ECHO.
SET /P continueChoice="Continue? (Y, N): "
IF "%continueChoice%" == "N" GOTO abort
ECHO Removing Read Only Attributes From Local Directory...
SET currectDirectory=%CD%
ECHO Current directory is: %currectDirectory%
FOR %%G IN (%currectDirectory%\*) DO (
ECHO %%G
ATTRIB -R "%%G"
)
GOTO end

:B
CLS
ECHO Are you sure you want to remove all read-only
ECHO attributes from this directory and all sub-directories?
ECHO.
ECHO Directory:
ECHO.
ECHO %CD%
ECHO.
SET /P continueChoice="Continue? (Y, N): "
IF "%continueChoice%" == "N" GOTO abort
ECHO Removing Read Only Attributes Cascading...
FOR /R %%f IN (*) DO (
ECHO %%f
ATTRIB -R "%%f"
)
GOTO end

:C
CLS
ECHO Cancel: no files have been changed
GOTO end

:badChoice
CLS
ECHO Unknown Option
ECHO.
ECHO.
ECHO.
GOTO begin

:abort
CLS
ECHO No files have been changed
ECHO.
ECHO.
ECHO.
GOTO begin

:end
ECHO Read only attributes removed
PAUSE
2
SlowLearner

ここには多くのオプションがありますが、このバッチファイルは、フォルダー/ sおよび/またはfile/sをバッチファイル自体にドロップすることをサポートしています。

以下のコードをRead-only Off.batに保存します。

コード内でのドロップビットの動作に関する注意。

@echo off
title ' %~nx0 ' by stephen147
color 5F
rem Place this inside a folder and run to remove the read-only attribute in the root folder and any folders or files within.
rem Or drop the folder/s and/or file/s to the batch file itself.
cd /d "%~dp0"
echo.
echo.Do you want to remove the read-only attributes inside this folder ? [ Ctrl + C to cancel ]
echo.
pause
echo.
echo.%cd%
attrib -s -d -r "%cd%\*.*"
attrib -s -d -r "%cd%"
rem This line supports dropping the folder/s and/or file/s to the batch file itself.
attrib -r "%*"
echo.
echo.Done
timeout /T 5
EXIT
0
Stephen Sherry