2016-12-09 1 views
0

OK 스크립팅 noobness, 특정 파일 확장명에 대한 폴더를 찾고 FTP 사이트에 업로드하고 로그 파일을 만드는 PowerShell 스크립트가 있습니다.FTP 업로드 및 이름

제대로 작동하지만 업로드 후 파일 확장명의 이름을 바꾸라는 새로운 요구 사항이 있습니다. 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);