回答
据我所知,你可以找出文件是否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. 如何检查Windows批处理脚本中文件的大小?
- 4. 检查是否仍在使用Windows批处理脚本
- 5. 批处理脚本检查是否存在早于一天的子目录中的文件
- 6. 批处理脚本检查和清理
- 7. 如何通过批处理脚本检查进程是否正在运行
- 8. 如何在批处理脚本中检查“mysqldump”和“mysql”命令是否成功?
- 9. 如何在Windows批处理脚本中检查URL是否有效
- 10. 批处理脚本来处理文件
- 11. 如何从批处理文件中检查文件是否存在
- 12. 批处理脚本与检查选项
- 13. 如何更改批处理文件输出文本的目录?
- 14. 在目录中执行SQL脚本的批处理脚本
- 15. 如何从批处理脚本中运行批处理脚本?
- 16. Windows 7的批处理文件:如何检查是否参数已经传递到批处理文件
- 17. 使用批处理脚本检查文件大小
- 18. 集循环在我的批处理脚本打开批处理文件脚本
- 19. Windows批处理脚本检索目录路径并通过它
- 20. 检查数组中的项目是否不存在批处理
- 21. Shell脚本:检查该文件是否为文件而不是目录
- 22. 如何从批处理脚本中的文件路径获取目录路径
- 23. 如何返回到我运行批处理脚本文件的目录?
- 24. 如何编辑此批处理文件以检查exe是否正在运行
- 25. 如何检查批处理文件中是否存在Windows服务
- 26. 如何检查ping是否在批处理文件中作出响应
- 27. 使用批处理脚本逐行解析文本文件(批处理文件)
- 28. 使用批处理或JavaScript来检查文件是否打开
- 29. Windows批处理 - 检查文件是否具有超过24h
- 30. Windows批处理文件 - 检查JAVA_HOME是否包含java 7
提及权限+1。这绝对不只是只读标志的问题,用'%〜ax'或类似的东西来检查将是微不足道的。 – Joey 2010-01-04 15:16:40