Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 要存在和复制或不存在,请创建dir和copy_Batch File - Fatal编程技术网

Batch file 要存在和复制或不存在,请创建dir和copy

Batch file 要存在和复制或不存在,请创建dir和copy,batch-file,Batch File,我正在尝试使用以下脚本“部署”word模板: if not exist "%USERPROFILE%\Documents\Custom Office Templates" ( mkdir "%USERPROFILE%\Documents\Custom Office Templates" 2>nul if not errorlevel 1 ( xcopy /y /f /S "\\server\share" "%userprofile%\Documents\Custom Office

我正在尝试使用以下脚本“部署”word模板:

if not exist "%USERPROFILE%\Documents\Custom Office Templates" (
mkdir "%USERPROFILE%\Documents\Custom Office Templates" 2>nul
if not errorlevel 1 (
    xcopy /y /f /S "\\server\share" "%userprofile%\Documents\Custom Office Templates"
)
但我遇到了一个障碍,Office的一些安装单独制作了文件夹“自定义Office模板”。但是,如果文件夹不存在,“我的脚本”在其当前状态下仅复制文件。所以我很好奇

问题:如果文件夹存在,是否可以使脚本复制文件? 如果它不存在,我的脚本将继续生成dir并复制文件

我知道有很多其他的方法来部署这些东西,有些可能会更容易,但我想尝试使用这种方法。希望你能帮忙


提前感谢大家。

您应该能够通过一行命令完成这一切:

XCopy "\\server\share" "%UserProfile%\Documents\Custom Office Templates\" /S /F /Y`

如果目标目录不存在,反斜杠将导致创建该目录。

无需检查
mkdir“%USERPROFILE%\Documents\Custom Office Templates”
xcopy/y/f/S”\\server\share“%USERPROFILE%\Documents\Custom Office Templates”
是所需的全部。您考虑的是流程,而不是期望的最终状态。因此,如果目录由于其自身原因已经存在,那么mkdir不会产生问题?不。也可能不需要它-请参阅
xcopy/?
/i
。在编程中,我们通常尝试做一些事情。如果它很重要,并且在这里它不应该失败,我们测试该尝试的结果。通过测试,特别是硬盘,if通过访问磁盘来检查文件/文件夹是否存在。如果没有,则需要第二次访问才能创建。创建它作为第一步始终是一次磁盘访问,无论它是否存在。这样速度更快,耗电更少,电池寿命更长,而且使用更少的资源,其他程序可以运行得更快,特别是在使用磁盘的情况下。它工作得很好。我倾向于过分夸大这些事情,因为正如你所说,我对这个过程想得太多了。非常感谢你的帮助。这正是
xcopy
/I
选项的作用。Taks还看了一眼(无耻的自我推销;-)…我本来会把猫猫帖子作为答案的,但我不能,因为这是评论什么的。但你完全正确。