วิธีลบแอตทริบิวต์อ่านอย่างเดียวซ้ำบน Windows 7


71

ฉันต้องลบคุณลักษณะอ่านอย่างเดียวของไฟล์ทั้งหมดภายใต้ไดเรกทอรีซ้ำใน Windows 7 โดยใช้บรรทัดคำสั่ง คุณช่วยยกตัวอย่างเกี่ยวกับเรื่องนี้ได้ไหม


1
ออกจากหัวของฉันโดยไม่มีการทดสอบattrib /S -R
nixda

คำตอบ:


88

ฉันจะใช้คำสั่ง ATTRIB เช่น:

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

attribคือคำสั่ง
-rคือแฟล็กสำหรับการลบแอ็ตทริบิวต์แบบอ่านอย่างเดียว
c:\folder\*.*คือโฟลเดอร์ที่คุณรันอยู่รวมถึง wildcards สำหรับไฟล์ทั้งหมด
/sคือแฟล็กสำหรับการทำไดเร็กทอรีย่อยและไฟล์ทั้งหมด

นี่คือเอกสารและตัวอย่างเพิ่มเติมสำหรับคำสั่ง attrib: https://docs.microsoft.com/en-us/windows-server/administrator/windows-commands/attrib


17
เพิ่ม a /dหากคุณต้องการให้ประมวลผลโฟลเดอร์จริงด้วย
LawrenceC

2
โปรดทราบว่าวิธีนี้ใช้ไม่ได้กับไฟล์ที่ทำเครื่องหมายว่า "ซ่อน" หรือ "ระบบ" ในการลบแอททริบิวต์แบบอ่านอย่างเดียวจากไฟล์เหล่านั้นคุณต้องลบแอททริบิวอื่น ๆ ด้วยเช่น (ตัวอย่างattrib -h -r)
Excelcius

2
หากเส้นทางมีช่องว่างที่ใส่ "" ไลค์: attrib -r "c: \ Program Files (x86) \ SmartGit *. *" / s
Daniel Hári

เพจที่ลิงก์นั้นไม่มีอยู่อีกต่อไป
Broots Waymb

25

ก่อนอื่นให้เปิดพรอมต์คำสั่ง จากนั้นcdในไดเรกทอรีที่คุณต้องการเริ่มใช้การเปลี่ยนแปลงคุณสมบัติ ขั้นสุดท้ายให้ป้อนคำสั่งต่อไปนี้:

 attrib -R /S

ซึ่งจะลบแอททริบิวต์แบบอ่านอย่างเดียวจากไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันจากนั้นจะลดขนาดลงเพื่อทำสิ่งเดียวกันในทุกไดเรกทอรีย่อย


9

หมายเหตุ:คำตอบอื่น ๆ ส่วนใหญ่ใช้เฉพาะ-rซึ่งอาจไม่ทำงานกับไฟล์ที่มีsystemหรือhiddenชุดคุณลักษณะ

ดังนั้นนี่คือวิธีแก้ปัญหาสำหรับซ้ำเอาคุณลักษณะอ่านอย่างเดียวจากทุกไฟล์ (รวมทั้งผู้ที่มีระบบหรือซ่อนไว้) ภายในไดเรกทอรี:

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

คำอธิบาย:
-sลบแอตทริบิวต์ของระบบลบแอตทริบิวต์ที่
-hซ่อนอยู่ลบแอตทริบิวต์
-rอ่านอย่างเดียว /sตั้งค่า / ลบแอตทริบิวต์ในโฟลเดอร์ปัจจุบันและรวมถึงโฟลเดอร์ย่อย /dตั้งค่า / ลบแอตทริบิวต์ของโฟลเดอร์ด้วย


2
ควรตั้งเป็นคำตอบที่ดีที่สุด
Julius

2

ฉันสร้างไฟล์ชุดนี้เพื่อทำสิ่งนี้ โดยทั่วไปไฟล์แบทช์นี้จะล้างข้อมูลเฉพาะอ่านคุณสมบัติในไดเรกทอรีในหรือไดเรกทอรีในและไดเรกทอรีที่ต่ำกว่าทั้งหมด หวังว่าใครบางคนพบว่ามีประโยชน์สำหรับมัน แก้ตัวโค้ดใด ๆ ที่อาจ "แย่" เพราะฉันเพิ่งเริ่มเรียนรู้ไฟล์แบตช์ด้วยตนเอง

@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

0

มีตัวเลือกมากมายที่นี่ แต่ไฟล์แบตช์นี้รองรับการวางโฟลเดอร์ / s และ / หรือไฟล์ / 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.