我需要做的是将test.pdf文件复制为已存在于特定目录中的每个当前.pdf文件。
例如,该目录包含xyz.pdf,rgh.pdf,bne.pdf等。
test.pdf需要重命名为xyz.pdf,rgh.pdf,bne.pdf等。 所有.pdf文件都应该具有完全相同的内容,这就是我需要将test.pdf重命名为目录中的每个.pdf文件的原因。
这是我迄今为止所尝试过的。它复制了测试文件" V2500SB.pdf"到正确的目录。目录中有两个.pdf文件,但它没有重命名" V2500SB.pdf"作为目录中的文件。它也在运行第一个文件后停止。有什么想法吗?
try
{
$PDFDir = "D:\V2500Test\*"
$items = Get-ChildItem -Path ($PDFDir)
$ErrorActionPreference= 'continue'
$NewPDFDir = "D:\V2500SB.pdf"
$NewPDF = "V2500SB.pdf"
if (Test-Path -Path "$PDFDir")
{
# Code for directory not empty
# enumerate the items array
foreach ($item in $items)
{
Write-Host $item.Name
Copy-Item -Path $NewPDFDir -destination $PDFDir
Rename-Item $NewPDFDir + $NewPDF $PDFDir + $item -Force
}
}
else
{
Write-Host "No file to move"
exit
}
} #end of try
catch #Catch any fatal errors and send an email with description
{
$ErrorMessage = $_.Exception.Message
$FailedItem = $_.Exception.ItemName
$ErrorName = $_.Exception.GetType().FullName
$ExceptionBody = @"
Exception Name: $ErrorName
Exception Type: $FailedItem
Exception Message: $ErrorMessage
"@
} # end of catch
finally
{
}
答案 0 :(得分:0)
你的重命名命令中有太多东西......
Rename-Item $ NewPDFDir + $ NewPDF $ PDFDir + $ item
这是你正在尝试的......
Rename-Item D:\V2500SB.pdfV2500SB.pdf D:\V2500Test\*whateverWasFound.pdf -Force
它复制一次的原因也是因为你每次使用相同的来源和目的地进行复制......
我强烈建议您尝试使用有价值的命令来查看实际情况......
答案 1 :(得分:0)
我不清楚你究竟要做什么,但我认为这是两件事之一:
您是否尝试使用“test.pdf”的内容替换文件夹中所有文件的内容?如果是这种情况,您只需要使用目标路径设置为原始文件名的Copy-Item:
lines = readlines()
deleted = []
indices_to_delete = random.sample(xrange(len(lines)), 10)
# sort to delete biggest index first
indices_to_delete.sort(reverse=True)
for i in indices_to_delete:
# lines.pop(i) delete item at index i and return the item
# do you need it or its index in the original file than
deleted.append((i, lines.pop(i)))
# write the updated *lines* back to the file or new file ?!
# and you have everything in deleted if you need it again
或者您是否尝试使用具有其他文件夹中文件名称的文件填充新文件夹,但这些文件的内容都是“test.pdf”?在这种情况下,答案是类似的,但你必须建立一个新的路径(使用Join-Path):
$PDFDir = "D:\V2500Test"
$items = Get-ChildItem -Path $PDFDir
$NewPDF = "V2500SB.pdf"
if(Test-Path -Path $PDFDir)
{
foreach ($item in $items)
{
Write-Host $item.Name
Copy-Item $NewPDF -Destination $item.FullName
}
}
无论哪种方式,您都不需要复制项目然后重命名项目; Copy-Item可以一步完成。