首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么这个PowerShell脚本要构造意外的文件路径?

为什么这个PowerShell脚本要构造意外的文件路径?
EN

Stack Overflow用户
提问于 2013-09-06 19:26:23
回答 1查看 309关注 0票数 0

使用从thisthisthis收集到的技巧,我终于能够启动一系列文件备份脚本。然而,有一件小事情我一直无法解决。没有运行时错误,但是当我运行这个脚本时,

代码语言:javascript
运行
复制
$originalPath = "\\Server\Path\_testData\"
$backupPath   = "\\Server\Path\_backup\"
#       
function supportBackup 
{
  "$($originalPath) copying DOC XLS PPT JPG GIF PDF WAV AVI to $($backupPath)"
  Get-ChildItem $originalPath\* -Include *.doc*, *.xls*, *.ppt*, *.jpg, *.gif, *.pdf, *.wav, *.avi | `
  foreach { 
    $targetFile = $backupPath + $_.FullName.SubString($originalPath.Length); 
    New-Item -ItemType File -Path $targetFile -Force;  
    Copy-Item $_.FullName -destination $targetFile 
  } 
  "Support File Backup Completed"
} 
supportBackup

原始文件路径将被转储到目标目录中,而不仅仅是文件。

我想要的:

代码语言:javascript
运行
复制
\\Server\Path\_backup\files-from-testData-directory

我得到的是:

代码语言:javascript
运行
复制
\\Server\Path\_backup\_testData\files-from-testData-directory

我知道这个问题与this question有着密切的关系(如果不是完全相同的话),但是在研究了它之后,尝试应用其中的一些智慧,使用$_.Name变量的各种迭代,我意识到我没有我想的那么好的理解。我需要有人向我解释目标路径和文件名是如何用给定的变量构造的,以及我需要使用哪些替代变量(或代码)来实现我想要的结果。有些东西我没有点击,我需要帮助理解它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-06 20:14:57

你太努力了。这应足以:

代码语言:javascript
运行
复制
$originalPath = '\\Server\Path\_testData'
$backupPath   = '\\Server\Path\_backup'
$extensions   = *.doc*,*.xls*,*.ppt*,*.jpg,*.gif,*.pdf,*.wav,*.avi

function supportBackup {
  "$($originalPath) copying DOC XLS PPT JPG GIF PDF WAV AVI to $($backupPath)"
  Get-ChildItem "$originalPath\*" -Include $extensions |
    Copy-Item -Destination "$backupPath\" -Force 
  "Support File Backup Completed"
} 

supportBackup

您可以将Get-ChildItem的结果直接输送到Copy-File中。但是,目标路径必须以反斜杠结束,否则指令将尝试用同名文件替换文件夹$backupPath,从而导致错误。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18665163

复制
相关文章

相似问题

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