2016-04-04 42 views
1

現在、特定のファイルをFTPサーバーに定期的にアップロードするためのPowerShellスクリプトがあります。このスクリプトはすべてのファイルを1つのメインフォルダにダンプします。 私が望むものは、(ルート)/年/月/日の構造でファイルをアップロードするスクリプトです。年月PowershellでアップロードしたFTPファイルの日のディレクトリ構造

私はこの目的のために使用することができるいくつかのスクリプトの場所のたくさんのを確認しましたが、それらのいずれかを動作させることができませんでした。

提案がありますか?私はgoogleで最初の100の結果を試したに違いない。

アップロードスクリプト '一つのフォルダにそれをすべてダンプ':

$webclient = New-Object System.Net.WebClient 

$webclient.Credentials = New-Object 
System.Net.NetworkCredential($user,$pass) 

foreach($item in ($checkitems)){ 

    Write-host "Uploading $item..." -ForegroundColor Green 
    $dt = Get-Date 
    Add-Content $log3 "$dt : Uploading $item..." 

    $name=$item.Name 
    $name=[System.Uri]::EscapeDataString($name) 
    $uri = New-Object System.Uri($ftp+$name+"") 
    $webclient.UploadFile($uri, $item.FullName) 

    if($error -ne $null) 
    { 
     Write-Host "Items will not be moved" -ForegroundColor Red 
    } 
    else 
    { 
     Write-Host "Moving $item to processed" -ForegroundColor green 
     Move-Item $item.Fullname $processed 
     $dt = Get-Date 
     Add-Content $log3 "$dt : Moving $item to processed" 
    } 
} 

私はすでに完全酒のために、確認源のいくつか:

答えて

0

これはyy/mm/ddフォルダにファイルをアップロードします:

$uri = New-Object System.Uri($ftp + $(Get-Date -f "yyyy/MM/dd") + "/" + $name) 

$ftpと仮定すると、既にスラッシュで終わる)

しかし、フォルダが存在する必要があります既に。


フォルダが存在しない場合、あなたはそれを作成する必要があります。
Creating a directory on remote FTP using powershell

あなたはすべてのレベルを作成する必要があります。

  • $ftp + $(Get-Date -f "yyyy")
  • $ftp + $(Get-Date -f "yyyy/MM")
  • $ftp + $(Get-Date -f "yyyy/MM/dd")

明らかに変数にGet-Dateを格納し、それを再利用し、良いアイデアです。実行の途中で新しい日が始まった場合、問題からあなたを守るため。

+0

ディレクトリが既に存在するかどうかを確認するために、アップロードされたファイルごとにチェックを追加する必要がありますか? 別のファイルがフォルダを再作成したときにフォルダがすでに作成されているとどうなりますか?それはエラーを投げるだろうか? – Alex

+0

はい、エラーが発生します。あなたが最初にチェックして作成することを選択した場合は、それが存在しなければ、あなた次第です。または、常に試してエラーを無視してください。 –

+0

uri値がStringではないというエラーが表示されています。私はこのようなものに変換しようとしました: 編集:マークアップは難しいです。 Link:https://i.imgur.com/f3Dx7md.png – Alex

関連する問題