バッチファイル内のファイル属性のテスト
-
23-08-2019 - |
質問
私は、バッチファイルを書いていると私は、ファイルが読み取り専用であるかどうかを知る必要があります。どのように私はそれを行うことができますか?
私は彼らが%〜修飾子を使用して取得する方法を知っているが、私は、この出力をどうするのか分かりません。それは------ -raのようなものを提供します。どのように私は、バッチファイルでこれを解析することができますか?
解決
このような何か作業をする必要があります:
@echo OFF
SETLOCAL enableextensions enabledelayedexpansion
set INPUT=test*
for %%F in (%INPUT%) do (
set ATTRIBS=%%~aF
set CURR_FILE=%%~nxF
set READ_ATTRIB=!ATTRIBS:~1,1!
@echo File: !CURR_FILE!
@echo Attributes: !ATTRIBS!
@echo Read attribute set to: !READ_ATTRIB!
if !READ_ATTRIB!==- (
@echo !CURR_FILE! is read-write
) else (
@echo !CURR_FILE! is read only
)
@echo.
)
私はこれを実行すると私は次の出力を取得します:
File: test.bat Attributes: --a------ Read attribute set to: - test.bat is read-write File: test.sql Attributes: -ra------ Read attribute set to: r test.sql is read only File: test.vbs Attributes: --a------ Read attribute set to: - test.vbs is read-write File: teststring.txt Attributes: --a------ Read attribute set to: - teststring.txt is read-write
他のヒント
特定のファイルをテストするには:
dir /ar yourFile.ext >nul 2>nul && echo file is read only || echo file is NOT read only
、読み取り専用ファイルのリストを取得するには、
dir /ar *
読み取り/書き込みファイルのリストを取得するには、
dir /a-r *
すべてのファイルを一覧表示し、読み取り専用または読み取り/書き込みするかどうかを報告するには:
for %%F in (*) do dir /ar "%%F" >nul 2>nul && echo Read Only: %%F|| echo Read/Write: %%F
の の編集のの
ファイル名が!
が含まれている場合は、 パトリックの答えには失敗します。これは、ループ内でオンとオフ遅延膨張をトグルすることによって解決することができるが、遅延膨張、あるいは環境変数に頼らず%%~aF
値をプローブするために別の方法があります:
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
)
)
所属していません StackOverflow