在Bash中,我会使用

[ -w ... ]

Windows批处理文件的等效内容是什么?

有帮助吗?

解决方案

据我所知,您可以找出文件是否 是否存在, ,但是除了尝试写作外,没有办法知道它是否可以写作。这不仅是没有 r 旗帜;网络和NTFS的权限也涉及(也可能是组策略)。

如果您可以重写代码,则可以捕获写操作槽的返回代码 errorlevel.

其他提示

对不起,人们在这里闲逛。

这可能不是您要寻找的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
    )
)

您可以使用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
ls -l foo.txt

输出-r-r-r--对于不写的文件输出-RW-r-r--对于可写的文件

您可以存储该值,并检查第三个字符是否为“ W”或“ - ”,以免可写。

使用一些语法 %myVar:~2,1% 在有条件的语句中。

不确定OS如何依赖。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top