使用从this、this和this收集到的技巧,我终于能够启动一系列文件备份脚本。然而,有一件小事情我一直无法解决。没有运行时错误,但是当我运行这个脚本时,
$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原始文件路径将被转储到目标目录中,而不仅仅是文件。
我想要的:
\\Server\Path\_backup\files-from-testData-directory我得到的是:
\\Server\Path\_backup\_testData\files-from-testData-directory我知道这个问题与this question有着密切的关系(如果不是完全相同的话),但是在研究了它之后,尝试应用其中的一些智慧,使用$_.Name变量的各种迭代,我意识到我没有我想的那么好的理解。我需要有人向我解释目标路径和文件名是如何用给定的变量构造的,以及我需要使用哪些替代变量(或代码)来实现我想要的结果。有些东西我没有点击,我需要帮助理解它。
发布于 2013-09-06 20:14:57
你太努力了。这应足以:
$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,从而导致错误。
https://stackoverflow.com/questions/18665163
复制相似问题