bat*_*azy 7 windows permissions batch-file
如何检查执行用户是否可以从批处理脚本写入目录?
这是我到目前为止所尝试的:
> cd "%PROGRAMFILES%"
> echo. > foo
Access is denied.
> echo %ERRORLEVEL%
0
Run Code Online (Sandbox Code Playgroud)
好的,那怎么样......
> copy NUL > foo
Access is denied.
> echo %ERRORLEVEL%
0
Run Code Online (Sandbox Code Playgroud)
不是吗?那怎么样......
> copy foo bar
Access is denied.
0 file(s) copied.
> echo %ERRORLEVEL%
1
Run Code Online (Sandbox Code Playgroud)
这有效,但如果文件不存在则会中断.
我已经阅读了一些关于内部命令但没有设置ERRORLEVEL的内容,但copy显然在最后一种情况下这样做了.
您可以写入copy %0 foo复制批处理文件本身。
这将永远存在。
请记住随后删除该文件,并确保不会用该名称覆盖现有文件。
应该有更好的方法来做到这一点,但我不知道。
编辑:更好的是,尝试一下mkdir foo。
如果批处理文件在网络上运行(或者它非常大),这可能会更快。