배치 파일을 쓰고 있으며 파일이 읽기 전용인지 알아야합니다. 어떻게해야합니까?배치 파일의 파일 특성 테스트
나는 % ~ a 수식어를 사용하는 방법을 알고 있지만이 출력을 어떻게 처리해야할지 모르겠다. 그것은 -ra ------와 같은 것을 제공합니다. 배치 파일에서이를 어떻게 파싱 할 수 있습니까?
배치 파일을 쓰고 있으며 파일이 읽기 전용인지 알아야합니다. 어떻게해야합니까?배치 파일의 파일 특성 테스트
나는 % ~ a 수식어를 사용하는 방법을 알고 있지만이 출력을 어떻게 처리해야할지 모르겠다. 그것은 -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.
)
을 나는이 프로그램을 실행할 때 나는 다음과 같은 출력을 얻을 :
dir /ar yourFile.ext >nul 2>nul && echo file is read only || echo file is NOT read only
이 효율적으로 활용하려면 다음 작업을
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
~ 1 : 1 감사합니다. –
이 파일은 1 파일에서 작동하지만 INPUT이 설정된 경우 ATTRIBS는 항상 동일한 값을 갖습니다. setLocal EnableDelayedExpansion을 시도했지만 사용하려고하면 불평합니다! ATTRIBS : ~ 1,1! 내가 뭘 할 수 있니? –
감사합니다. 어떤 이유로 ATTRIBS : ~ 1,1! 비교에서 직접 작동하지 않았지만 다른 변수에 저장하는 것이 효과적입니다. –
는 특정 파일을 테스트하려면를 읽기 전용 파일 목록
/쓰기 모든 파일을 나열하고 읽기 전용 여부를보고하거나 읽으려면 파일
dir /a-r *
읽기/쓰기의 목록을 얻으려면 :
for %%F in (*) do dir /ar "%%F" >nul 2>nul && echo Read Only: %%F|| echo Read/Write: %%F
편집
파일 이름에 !
이 있으면 Patrick's answer이 실패합니다. 이것은 루프 내에서 오프 지연 확장을 전환하여 해결하지만, 지연 확장에 의존하지 않고 %%~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
)
)
배치 파일의 종류는? bash, DOS ...? –
Windows 배치 파일은 % ~ a를 언급 한 것을 볼 수 있습니다. – Joey