Cara menghapus atribut read-only secara rekursif pada Windows 7

71

Saya perlu menghapus atribut read-only dari semua file di bawah direktori secara rekursif pada Windows 7 menggunakan baris perintah. Bisakah Anda memberikan contoh tentang ini?

Mert Nuhoglu
sumber
1
Keluar dari kepala saya tanpa pengujianattrib /S -R
nixda

Jawaban:

89

Saya akan menggunakan perintah ATTRIB, misalnya:

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

attribadalah perintahnya
-radalah flag untuk menghapus atribut read-only
c:\folder\*.*adalah folder tempat Anda menjalankannya, ditambah wildcard untuk semua file
/sadalah flag untuk melakukan semua sub direktori dan file

Berikut ini beberapa dokumentasi dan contoh untuk perintah attrib: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/attrib

Callen L
sumber
17
Tambahkan /djika Anda ingin memproses folder yang sebenarnya juga.
LawrenceC
2
Perhatikan bahwa ini tidak berfungsi dengan tanda file sebagai "tersembunyi" atau "sistem". Untuk menghapus atribut read-only dari file-file itu, Anda juga harus menghapus atribut lainnya (misalnya attrib -h -r).
Excelcius
2
jika path berisi spasi masukkan "" seperti: attrib -r "c: \ Program Files (x86) \ SmartGit *. *" / s
Daniel Hári
Halaman di tautan itu tidak ada lagi.
Broots Waymb
25

Pertama, buka command prompt. Lalu cdke direktori tempat Anda ingin mulai menerapkan perubahan atribut. Terakhir, masukkan perintah berikut:

 attrib -R /S

Itu akan menghapus atribut read-only dari semua file di direktori saat ini, maka itu akan muncul kembali untuk melakukan hal yang sama di semua subdirektori.

stderr
sumber
9

Catatan: Sebagian besar jawaban lain hanya menggunakan -ryang mungkin tidak berfungsi pada file yang memiliki systematau hiddenatribut yang ditetapkan.

Jadi di sini adalah solusi untuk menghapus atribut read-only secara rekursif dari semua file (termasuk yang sistem atau tersembunyi) di dalam direktori:

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

Deskripsi:
-s Hapus atribut sistem Hapus atribut
-htersembunyi Hapus atribut
-rhanya-baca /sSet / hapus atribut dalam folder saat ini dan termasuk subfolder /dAtur / hapus atribut folder juga

Hanya Bayangan
sumber
2
Ini harus ditetapkan sebagai jawaban terbaik.
Julius
2

Saya membuat file batch ini untuk melakukan ini. Pada dasarnya file batch ini akan menghapus hanya atribut yang dibaca di dalam direktori atau di direktori dan semua direktori yang lebih rendah. Semoga seseorang menemukan gunanya. Maafkan kode yang mungkin tampak "buruk" karena saya baru mulai mempelajari file batch sendiri.

@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
SlowLearner
sumber
0

Banyak opsi di sini tetapi file batch ini mendukung menjatuhkan folder / s dan / atau file / s ke file batch itu sendiri.

Simpan kode ini di bawah untuk Read-only Off.bat.

Catatan untuk bagaimana bit drop bekerja di dalam kode.

@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
Stephen Sherry
sumber