使用从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
我知道这个问题与这个问题密切相关(如果不完全相同),但是在研究了这个问题并尝试从中运用一些智慧之后,使用$_.Name
变量的各种迭代,我意识到我没有一个很好的理解我以为我做到了。我需要有人向我解释如何使用给定的变量构造目标路径和文件名,以及我需要使用哪些替代变量(或代码)来实现所需的结果。有些东西不是我想要的,我需要帮助来理解它。
你太努力了。这样就足够了:
$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
用相同名称的文件替换该文件夹,从而导致错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句