2015-09-25 117 views
0

中的所有当前.pdf文件我需要做的是将test.pdf文件复制为当前已经在特定目录中的.pdf文件。将测试.pdf文件复制并重命名为目录

例如,该目录具有xyz.pdf,rgh.pdf,bne.pdf等

检验.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

注释掉catch块,看看你的脚本是否失败并报错。 –

+0

您是否正在尝试在与另一个文件夹中的文件具有相同名称的文件夹中创建一组全新的文件?或者你是否试图替换现有文件夹中每个文件的内容? –

回答

0

我不清楚你想要做什么,但我认为这是两件事情之一:

您是否试图用'test.pdf'的内容替换文件夹中所有文件的内容?如果是这样的话,你只需要使用拷贝项设置为原始文件名的目标路径:

$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 
    } 
} 

或者,你想,以填补新的文件夹有文件的名称从另一个文件夹中的文件,但所有的内容都是'test.pdf?在这种情况下,答案是相似的,但你必须建立一个新的路径(使用联接路径):

$PDFDir = "D:\SourceFolder" 
$items = Get-ChildItem -Path $PDFDir 
$NewPDF = "V2500SB.pdf" 

$PDFDir2 = "D:\V2500Test" 

if(Test-Path -Path $PDFDir2) 
{ 
    foreach ($item in $items) 
    { 
     Write-Host $item.Name 
     Copy-Item $NewPDF -Destination (Join-Path $PDFDir2 -ChildPath $item.Name) 
    } 
} 

无论哪种方式,你不需要做拷贝项,然后重新命名 - 项目;复制项目可以一步处理。

+0

谢谢@ E.Z。哈特第一个例子就是我想要做的。 –

0

你有你的重命名命令太多的东西......

重命名,项目$ NewPDFDir + $ NewPDF $ PDFDir + $项目

这是你想要什么?

Rename-Item D:\V2500SB.pdfV2500SB.pdf D:\V2500Test\*whateverWasFound.pdf -Force 

而且它的拷贝只有一次的原因是因为你复制使用相同的源和目标每次...

我强烈建议尝试与价值的命令,看看什么是真正回事...

相关问题