Testing for file attribute in batch file

后端 未结 2 1208
执念已碎
执念已碎 2021-01-02 09:25

I\'m writing a batch file and I need to know if a file is read only. How can I do that ?

I know how to get them using the %~a modifier but I don\'t know what to do w

2条回答
  •  时光说笑
    2021-01-02 10:10

    Something like this should work:

    @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.
    )
    

    When I run this I get the following output:

    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
    

提交回复
热议问题