回答
據我所知,你可以找出文件是否exists or not,但除了試圖寫入它之外,沒有辦法知道它是否可寫入。這不僅是沒有R標誌的問題;網絡和NTFS權限也會涉及(也可能是組策略)。
如果你可以重寫你的代碼,你可以捕捉到寫操作的返回碼槽的errorlevel。
,你可以做這樣的使用VBScript
Set objFS=CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
strFile = objArgs(0)
Set objFile = objFS.GetFile(strFile)
If Not objFile.Attributes And 1 Then
WScript.Echo "The file is Read/Write."
Else
WScript.Echo "The file is Read-only."
End If
另存爲check.vbs和命令行
c:\test> cscript //nologo check.vbs myfile
ACL也涉及到。見Álvaro的答案。 – Joey 2010-01-04 15:17:50
在這裏鳴響對不起鄉親..
這可能不是100%,你在找什麼,但我已經與Apache Tomcat上正在使用的日誌文件中使用這個和它的作品萬無一失。
感謝@dbenham他真棒代碼! https://stackoverflow.com/a/10520609/175063
SETLOCAL ENABLEDELAYEDEXPANSION
REM TOMCAT LOGS
FOR /r "D:\logs" %%X IN (*) DO (
SET FileName=%%~nxX
2>nul ( >>D:\logs\!FileName!" (call)) && (
REM DO STUFF HERE
SET ModDt=%%~tX
FOR /f "tokens=1-3 delims=.:/ " %%j IN ("!ModDt!") DO SET FDate=%%l-%%j-%%k&Set RegDate=%%j-%%k-%%l
IF "%CurrentDate%" NEQ "!FDate!" (
IF %%~zX GTR 0 (
ECHO ARCHIVING "D:\logs\!FileName!" >> %logfile%
7za.exe -tzip -y a "D:\Zips\%COMPUTERNAME%-Tomcat-!RegDate!-compressed.zip" "D:\logs\!FileName!" && (
DEL /Q "D:\logs\!FileName!"
) || (
if "%ERRORLEVEL%" == "2" (
echo Zipping failed ^(exit status %ERRORLEVEL%^). Trying again in 5 seconds...
) else (
echo Zip completed with warnings ^(most likely because a file was locked by another
echo process and had to be skipped^). Trying again in 5 seconds...
)
del "D:\Zips\%COMPUTERNAME%-Tomcat-!RegDate!-compressed.zip" >NUL 2>&1
PING 0.0.0.0 -n 6 -w 1000 >NUL
)
)
)
REM END OF UNLOCKED ZONE
) || (
ECHO FILE IS LOCKED
)
)
ls -l foo.txt
輸出-r - R的 - R--一個不可寫文件 輸出-rw-R - R--可寫文件
你可以存儲值,並檢查第3個字符是否爲可寫的「w」或不可寫的「 - 」。使用
在條件語句中的一些語法像%myVar:~2,1%
。
不知道如何與操作系統有關,這將是。
'ls -l'可以和linux一起使用,但不能和windows一起使用 – jeb 2016-09-23 22:13:30
- 1. 檢查是否存在目錄使用批處理文件
- 2. 如何測試文件是批處理腳本中的目錄?
- 3. 如何檢查文件夾是否存在?使用批處理腳本?
- 4. 批處理腳本在目錄中查找文件
- 5. 如何檢查批處理文件是否在Windows上運行?
- 6. 批處理文件批處理文件檢查打開的瀏覽器腳本
- 7. 如何檢查Windows批處理腳本中文件的大小?
- 8. 檢查是否仍在使用Windows批處理腳本
- 9. 批處理腳本檢查是否存在早於一天的子目錄中的文件
- 10. 批處理腳本檢查和清理
- 11. 批處理腳本查找文件
- 12. 批處理文件腳本
- 13. 批處理腳本:檢查是否有效或無效輸入
- 14. 批處理腳本來檢查文件是否超過一定的年齡
- 15. 如何在批處理腳本中檢查「mysqldump」和「mysql」命令是否成功?
- 16. 如何通過批處理腳本檢查進程是否正在運行
- 17. 如何在Windows批處理腳本中檢查URL是否有效
- 18. 在批處理腳本中檢查文件大小
- 19. 批處理腳本來處理文件
- 20. 如何從批處理文件中檢查文件是否存在
- 21. 如何檢查批處理文件中是否存在某個文件?
- 22. 批處理文件檢查文件是否覆蓋正確
- 23. 批處理腳本與檢查選項
- 24. 檢查JAVA_HOME使用批處理腳本
- 25. 如何在shell腳本中檢查目錄是否存在?
- 26. 檢查是否有其他批處理文件仍在運行
- 27. 檢查命令是否在批處理文件中可用
- 28. 使用目錄播放的批處理文件腳本
- 29. 如何批量處理文本文件中的目錄列表?
- 30. 如何更改批處理文件輸出文本的目錄?
提及權限+1。這絕對不只是只讀標誌的問題,用'%〜ax'或類似的東西來檢查將是微不足道的。 – Joey 2010-01-04 15:16:40