2016-08-08 10 views
1

2つのカスタムインデックスがS & P.で計算されます。S & Pは、アクセスできるFTPサーバーフォルダに8つのファイル(インデックスごとに4つ)をアップロードします。彼らは毎晩アップロードされ、私は翌朝それらを取得します。私はこれが自動化されることを望んでいる。ここでFTPからファイルを取得し、ファイル名に基づいてサーバーで整理する

は、例えばファイル名です:

20160805_LUKDGUP
20160805_LUKDGUP_NCS
20160805_LUKDGUP_NCS_ADJ
20160805_LUKDGUP_NCS_CLS
20160805_LUKSGUP
20160805_LUKSGUP_NCS
20160805_LUKSGUP_NCS_ADJ
20160805_LUKSGUP_NCS_CLS

ローカルサーバーにファイルをダウンロードして、ファイル名に基づいて自動的にフォルダに入れる→20160805_LUKDGUP_ *ファイルは、LUKSGUP \ 20160805 \にあり、LUKSGUPファイルにも同じ名前が付けられています。

私は他の記事からいくつかのバッチファイルを変更しようとしたが、私が働いてからそれらを防ぐため、小さなミスを作り続けると考えてきました。

編集20160809から0841: 私は私のニーズに合わせて、これを変更しようとしてきたが、うまくループを追跡することができていない:もちろん

setlocal 
set "basename=." 
PAUSE 
for /F "tokens=1 delims=_" %%a in ('dir /B /A-D') do (
    set "filename=%%a" 
    setlocal EnableDelayedExpansion 
    for /F "delims=" %%c in ("!basename!") do if "!filename:%%c=!" equ  "!filename!" (
     set "basename=!filename!" 
     md "!basename!" 
    ) 
    move "!filename!.%%b" "!basename!" 
    for /F "delims=" %%c in ("!basename!") do (
     endlocal 
     set "basename=%%c 
     PAUSE 
    ) 
) 

Source.これは関与しませんFTPオートメーション、しかし、私はその部分をFilezillaや他のFTPソフトウェアで把握することができます。我々のサーバー上にいったん整理することは、この作品が解決しようとしていたものです。

+2

あなたが喜ばことができれば[あなたの投稿を編集](http://stackoverflow.com/posts/38838906/edit):

それは、PowerShellでこれを実装する方法簡単ですすでに動作していないことが試行されている、それは非常に便利です。 – SomethingDark

答えて

0

は、バッチファイルでこれをハックしようとしないでください。あなたが持っているコードを含むように

$url = "ftp://user:[email protected]/remote/path/" 
$request = [System.Net.WebRequest]::Create($url) 
$request.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory 
$response = $request.GetResponse() 
$reader = New-Object IO.StreamReader $response.GetResponseStream() 
$listing = $reader.ReadToEnd() 
$reader.Close() 
$response.Close() 

$files = 
    ($listing -split "`r`n") | 
    Where-Object {$_ -like "*_*"} 

$webclient = New-Object System.Net.WebClient 

foreach ($file in $files) 
{ 
    $tokens = $file -split "_" 
    $localPath = (Join-Path $tokens[0] $tokens[1]) 
    $localFilePath = (Join-Path $localPath $file) 
    Write-Host ($file + " => " + $localFilePath) 

    if (!(Test-Path -Path $localPath)) 
    { 
     New-Item -Path $localPath -ItemType directory | Out-Null 
    } 

    $webclient.DownloadFile(($url + $file), $localFilePath) 
} 
+0

ありがとうございました!これは本当に近いです!各セットのファイルのうち3つを取得しますが、ベースファイル20160805_LUKDGUPも20160805_LUKSGUPも取得しません。これはどのように上書きを処理するのですか?ファイルは一度に5日分、たとえばM1 T1 W1 Th1 F1、T1 W1 Th1 F1 M2などです。前のファイルが上書きされてもそれは大きな問題ではありません。 –

+0

'20160805_LUKSGUP'のコードを修正しました+ファイルは上書きされます。 –

+0

これは実際にそれらを取得しますが、それらは自分のフォルダLUKDGUP.SDLとLUKSGUP.SDLに入れられます。私は本当にこれであなたの助けに感謝します! –

関連する問題