To test a specific file:
dir /ar yourFile.ext >nul 2>nul && echo file is read only || echo file is NOT read only
To get a list of read only files
dir /ar *
To get a list of read/write files
dir /a-r *
To list all files and report whether read only or read/write:
for %%F in (*) do dir /ar "%%F" >nul 2>nul && echo Read Only: %%F|| echo Read/Write: %%F
EDIT
Patrick's answer fails if the file name contains !
. This can be solved by toggling delayed expansion on and off within the loop, but there is another way to probe the %%~aF
value without resorting to delayed expansion, or even an environment variable:
for %%F in (*) do for /f "tokens=1,2 delims=a" %%A in ("%%~aF") do (
if "%%B" equ "" (
echo "%%F" is NOT read only
) else (
echo "%%F" is read only
)
)