我的代码没有将文件夹中的文件复制到我的备份位置或将文件移动到目标文件夹...请帮忙!!
设置源、备份和目标文件夹路径
$sourcePath1 = "Z:\Texas_Transfer\Documents"
$sourcePath2 = "Z:\Texas_Transfer\Haas-NC"
$sourcePath3 = "Z:\Texas_Transfer\Mounting"
$sourcePath4 = "Z:\Texas_Transfer\Orders"
$backupPath1 = "Z:\Texas_Transfer\Documents\Backup"
$backupPath2 = "Z:\Texas_Transfer\Haas-NC\Backup"
$backupPath3 = "Z:\Texas_Transfer\Mounting\Backup"
$backupPath4 = "Z:\Texas_Transfer\Orders\Backup"
$destPath1 = "T:\public\640TXPLAQUES\Documents"
$destPath2 = "T:\public\640TXPLAQUES\Haas-NC"
$destPath3 = "T:\public\640TXPLAQUES\Mounting"
$destPath4 = "T:\public\640TXPLAQUES\Orders"
获取源文件夹路径中的文件列表
$files1 = Get-ChildItem $sourcePath1
$files2 = Get-ChildItem $sourcePath2
$files3 = Get-ChildItem $sourcePath3
$files4 = Get-ChildItem $sourcePath4
将文件从源文件夹复制到备份文件夹,并替换任何具有相同名称的现有文件
foreach ($file in $files1) {
Copy-Item $file.FullName -Destination $backupPath1 -Force
}
foreach ($file in $files2) {
Copy-Item $file.FullName -Destination $backupPath2 -Force
}
foreach ($file in $files3) {
Copy-Item $file.FullName -Destination $backupPath3 -Force
}
foreach ($file in $files4) {
Copy-Item $file.FullName -Destination $backupPath4 -Force
}
将文件从源文件夹移动到目标文件夹,替换任何具有相同名称的现有文件
foreach ($file in $files1) {
Move-Item $file.FullName -Destination $destPath1 -Force
}
foreach ($file in $files2) {
Move-Item $file.FullName -Destination $destPath2 -Force
}
foreach ($file in $files3) {
Move-Item $file.FullName -Destination $destPath3 -Force
}
foreach ($file in $files4) {
Move-Item $file.FullName -Destination $destPath4 -Force
}
答案1
您的代码看起来过于复杂,这应该可以工作:
# Define a List
$folderSets = @(
# With HashTables that store related paths as properties
@{
Source = "Z:\Texas_Transfer\Documents"
Destination = "T:\public\640TXPLAQUES\Documents"
Backup = "Z:\Texas_Transfer\Documents\Backup"
}
@{
Source = "Z:\Texas_Transfer\Haas-NC"
Destination = "T:\public\640TXPLAQUES\Haas-NC"
Backup = "Z:\Texas_Transfer\Haas-NC\Backup"
}
@{
Source = "Z:\Texas_Transfer\Mounting"
Destination = "T:\public\640TXPLAQUES\Mounting"
Backup = "Z:\Texas_Transfer\Mounting\Backup"
}
# Etc.
)
# Loop through the list and copy/move all files
foreach ($folderSet in $folderSets) {
Copy-Item -Path "$($folderSet.Source)\*" -Destination $folderSet.Backup -Force
Move-Item -Path "$($folderSet.Source)\*" -Destination $folderSet.Destination -Force
}
请注意,要复制/移动的目录需要存在,否则您需要在脚本中使用以下命令创建它们New-Item
当然,您-Path
的大多数命令中都缺少参数,为了便于阅读,您应该将其包括在内。
如果结构总是相似的话,您可以通过仅获取源列表并基于它们构建路径来进一步简化它。
答案2
我的代码没有将文件复制到我的备份位置或将文件移动到目标文件夹
-path string
项目的路径。允许使用通配符。
使用点(.)指定当前位置。默认为当前目录。
使用通配符 (*) 指定当前位置的所有项目。
(重点是我的)
copy-item
如果文件不在当前目录中,则move-item
两者都必须作为第一个参数。-path