2016-12-09 24 views
0

私のスクリプトのnoobness、特定のファイル拡張子のフォルダを検索し、FTPサイトにアップロードしてログファイルを作成するPowerShellスクリプトがあります。FTPアップロードとREname

これはうまくいきますが、アップロード後にファイル拡張子の名前を変更する新しい要件があります。 私はWebClientではなくWebRequestを使用する必要があることを理解していますが、私はそれに苦労しています。どうすればこれを達成できますか?ここ は、現在のスクリプトです:

$LogFile='C:\test\log.txt' 

$TimeStamp= get-date -Format yyyyMMdd"_"HHmmss 
$ScriptrunTime= get-date 

Add-Content $LogFile ' ' 
Add-Content $LogFile '------------------------------------------------------' 

Add-Content $LogFile ' ' 

$msg= '----------- Script run time: ' + $TimeStamp +'  -----------' 
Add-Content $LogFile $msg 

Add-Content $LogFile ' ' 

$FTP="ftp://username:[email protected]/folder/" 

$webclient = New-Object System.Net.WebClient 

$webclient.Proxy = [System.Net.WebRequest]::DefaultWebProxy 

$Source ='C:\source' 

try{ 

$data = @(dir -file $Source\*.tmp | select fullname, name) 

$msg='Source: ' + $Source 
Add-Content $LogFile $msg 

Add-Content $LogFile ' ' 
$msg='Target: ' + $FTP 
Add-Content $LogFile $msg 

Add-Content $LogFile ' ' 
$msg='There are ' + $data.Count + ' files to upload' 
Add-Content $LogFile $msg 

foreach($item in $data){ 


Add-Content $LogFile ' ' 

$UploadFile=$ftp+$item.Name 
$UploadFileName=$item.FullName 


try 
{ 
    $msg="Uploading $UploadFile" 
    Add-Content $LogFile $msg 

    $webclient.UploadFile($UploadFile, $UploadFileName) 


    Add-Content $LogFile ' ' 
    Add-Content $LogFile "Upload completed" 

    Add-Content $LogFile ' ' 

    Add-Content $LogFile ' ' 
    Add-Content $LogFile "Delete file" 



    } 
    catch 
    { 
    $ErrorDesc=$_.Exception.Message 

    Add-Content $LogFile ' ' 
    $msg='Error occured: '+ $ErrorDesc 
    Add-Content $LogFile $msg 
} 

Add-Content $LogFile ' ' 

} 
} 
catch 
{ 

$ErrorDesc=$_.Exception.Message 
Add-Content $LogFile ' ' 
$msg='Error occured: '+ $ErrorDesc 
Add-Content $LogFile $msg 
} 

$TimeStamp= get-date -Format yyyyMMdd"_"HHmmss 
$ScriptrunTime= get-date 
Add-Content $LogFile ' ' 
$msg='----------- Script end time: ' + $TimeStamp +'  -----------' 
Add-Content $LogFile $msg 
+2

あなたはすべての中を削除し、その後、移動アイテムをアップロードする前にファイルの名前を変更(同時に)ステージング領域に移動し、新しく名前を変更したファイルをアップロードすることができませんでしたステージングエリア? – VendableFall

+1

FTPにアップロードする前に拡張機能を変更するだけの理由はありますか? –

+0

[PowerShellでFTP上のファイルの名前を変更する]の複製があります(http://stackoverflow.com/questions/12070808/rename-file-on-ftp-with-powershell) –

答えて

0

WebClient.UploadFile方法はaddressfileNameパラメータが同じ名前のファイルを参照する必要はありません。アップロードする際にファイルの拡張子を変更することができます。新しい拡張子を仮定するとextです:

$UploadFile = $ftp + [IO.Path]::ChangeExtension($item.Name, "ext"); 

$webclient.UploadFile($UploadFile, $UploadFileName); 
関連する問題