批处理文件中的“如果不存在”命令

哑光

我需要在Windows批处理文件中编写一些代码。

这个脚本的兴趣部分应该建立一个文件夹,如果该文件夹尚不存在,但是,如果此文件夹已经存在,它应该覆盖的内容。

我尝试过这样的事情:

if not exist %USERPROFILE%\.qgis-custom (
    mkdir %USERPROFILE%\.qgis-custom 
    xcopy %OSGEO4W_ROOT%\qgisconfig %USERPROFILE%\.qgis-custom /s /v /e
)

但是我不确定我做对了吗。

谢谢

MC ND
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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

循环批处理文件中隐藏文件不存在错误

Windows批处理文件:查找目录(如果不存在),创建,然后将文件移至该目录

批处理-Ghost文件通过“如果不存在”检查

批处理文件无法删除“正在使用”的文件,但是该文件似乎不存在?

Pandoc Windows批处理文件生成错误的路径openBinary文件不存在

如果尚不存在WinSCP和批处理文件,则在SFTP服务器上创建文件夹

仅当目标目录中不存在文件时,如何在无限运行的批处理文件中复制文件?

在批处理文件中运行命令

批处理 - 如果(文件)存在命令?

检查批处理脚本中是否存在任何文件,但不存在目录

批处理文件:如果命令不起作用

如果存在在批处理文件中不再起作用

如果文件不存在,处理文件的首选方法

如何从批处理文件中检查文件是否存在

如何验证批处理文件中是否存在文件?

如何从批处理文件中检查文件是否存在

如果使用Spring集成的远程分区中不存在资源路径,Spring批处理中的MessageChannelPartitionHandler会如何表现?

将命令存储在批处理文件中的变量中

如果忽略批处理文件中的语句变量赋值

如果目录中不存在文件名,则查找命令

在批处理文件中调用Powershell命令

将find命令放在批处理文件中

在批处理文件中执行WinSCP命令

berks 后的命令不在批处理文件中运行

命令清除批处理文件中的环境

在批处理文件中获取原始参数或命令

如何在批处理文件中解析命令输出

批处理文件中的CTRL + Z命令

更新批处理文件中的命令行参数