我需要在Windows批处理文件中编写一些代码。
这个脚本的兴趣部分应该建立一个文件夹,如果该文件夹尚不存在,但是,如果此文件夹已经存在,它应该不覆盖的内容。
我尝试过这样的事情:
if not exist %USERPROFILE%\.qgis-custom (
mkdir %USERPROFILE%\.qgis-custom
xcopy %OSGEO4W_ROOT%\qgisconfig %USERPROFILE%\.qgis-custom /s /v /e
)
但是我不确定我做对了吗。
谢谢
if not exist "%USERPROFILE%\.qgis-custom\" (
mkdir "%USERPROFILE%\.qgis-custom" 2>nul
if not errorlevel 1 (
xcopy "%OSGEO4W_ROOT%\qgisconfig" "%USERPROFILE%\.qgis-custom" /s /v /e
)
)
您几乎完成了。逻辑是正确的,只是做了一些小改动。
此代码检查文件夹是否存在(请参阅结尾的反斜杠,只是为了将文件夹与具有相同名称的文件区分开来)。
如果不存在,则创建它并检查创建状态。如果存在相同名称的文件,或者您无权创建该文件夹,则它将失败。
如果一切正常,将复制文件。
引用所有路径以避免空格问题。
可以简化它(只需更少的代码,并不意味着它会更好)。另一个选择是始终尝试创建文件夹。如果没有错误,则复制文件
mkdir "%USERPROFILE%\.qgis-custom" 2>nul
if not errorlevel 1 (
xcopy "%OSGEO4W_ROOT%\qgisconfig" "%USERPROFILE%\.qgis-custom" /s /v /e
)
在两个代码示例中,如果在脚本执行过程中未创建文件夹,则不会复制文件。
编辑-dbenham评论,相同的代码可以写成一行
md "%USERPROFILE%\.qgis-custom" 2>nul && xcopy "%OSGEO4W_ROOT%\qgisconfig" "%USERPROFILE%\.qgis-custom" /s /v /e
&&
仅当上一个命令未设置错误级别时,才会执行后面的代码。如果mkdir
失败,xcopy
则不执行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句