首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将单个文件复制到多个目标(如果这些目标存在

如何将单个文件复制到多个目标(如果这些目标存在
EN

Stack Overflow用户
提问于 2019-08-02 23:45:25
回答 2查看 85关注 0票数 1

我有一个Adobe AE的脚本,它必须安装在安装文件夹ex中。"C:\Program Files\Adobe\Adobe After Effects CC 2017\Support Files\Scripts\“

我们有多个安装版本的AE的用户,并需要在每个版本的脚本。理想情况下,我想要的是一个脚本,它将复制"script.jsx“到目标文件夹,如果他们存在。

我尝试使用下面的,但它无法检查目标是否存在。

代码语言:javascript
运行
复制
"C:\Program Files\Adobe\Adobe After Effects CC 2018\Support Files\Scripts\","C:\Program Files\Adobe\Adobe After Effects CC 2017\Support Files\Scripts\","C:\Program Files\Adobe\Adobe After Effects CC 2016\Support Files\Scripts\" | 
ForEach-Object {Copy-Item $dirFiles\rd_RenderLayers.jsx -Recurse -Destination $_}

我也试过这个

代码语言:javascript
运行
复制
if ( $(Try { Test-Path "C:\Program Files\Adobe\Adobe After Effects CC 2014\Support Files\Scripts\".trim() } Catch { $false }) ) {
   Copy-Item -Path C:\Users\Desktop\rd_renderlayers_v3.1\rd_RenderLayers.jsx -Destination C:\Program Files\Adobe\Adobe After Effects CC 2014\Support Files\Scripts\
 }
 if ( $(Try { Test-Path "C:\Program Files\Adobe\Adobe After Effects CC 2015\Support Files\Scripts\".trim() } Catch { $false }) ) {
   Copy-Item -Path C:\Users\Desktop\rd_renderlayers_v3.1\rd_RenderLayers.jsx -Destination C:\Program Files\Adobe\Adobe After Effects CC 2015\Support Files\Scripts\
 }
 if ( $(Try { Test-Path "C:\Program Files\Adobe\Adobe After Effects CC 2016\Support Files\Scripts\".trim() } Catch { $false }) ) {
   Copy-Item -Path C:\Users\Desktop\rd_renderlayers_v3.1\rd_RenderLayers.jsx -Destination C:\Program Files\Adobe\Adobe After Effects CC 2016\Support Files\Scripts\
 }
 if ( $(Try { Test-Path "C:\Program Files\Adobe\Adobe After Effects CC 2017\Support Files\Scripts\".trim() } Catch { $false }) ) {
   Copy-Item -Path C:\Users\Desktop\rd_renderlayers_v3.1\rd_RenderLayers.jsx -Destination C:\Program Files\Adobe\Adobe After Effects CC 2017\Support Files\Scripts\
 }
 if ( $(Try { Test-Path "C:\Program Files\Adobe\Adobe After Effects CC 2018\Support Files\Scripts\".trim() } Catch { $false }) ) {
   Copy-Item -Path C:\Users\Desktop\rd_renderlayers_v3.1\rd_RenderLayers.jsx -Destination C:\Program Files\Adobe\Adobe After Effects CC 2018\Support Files\Scripts\
 }
 if ( $(Try { Test-Path "C:\Program Files\Adobe\Adobe After Effects CC 2019\Support Files\Scripts\".trim() } Catch { $false }) ) {
   Copy-Item -Path C:\Users\Desktop\rd_renderlayers_v3.1\rd_RenderLayers.jsx -Destination C:\Program Files\Adobe\Adobe After Effects CC 2019\Support Files\Scripts\
 }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-03 01:02:19

您需要在ForEach-Object中创建一个带有Test-Path -LiteralPath $_的条件,以限制复制到那些存在的输入目录:

代码语言:javascript
运行
复制
$dirs | 
  ForEach-Object {
    if (Test-Path -LiteralPath $_) {
      Copy-Item $dirFiles\rd_RenderLayers.jsx -Destination $_
    }
  }

请注意,我删除了-Recurse,因为它在复制单个文件时不适用。

票数 0
EN

Stack Overflow用户

发布于 2019-08-03 00:20:22

代码语言:javascript
运行
复制
foreach ($dest in 'there2','there3') { cp there $dest }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57329752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档