复制测试.pdf文件&重命名为目录中的所有当前.pdf文件

时间:2015-09-25 15:22:34

标签: powershell

我需要做的是将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
        {  
        }

2 个答案:

答案 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可以一步完成。