C#とVBScriptのブログ

VBScriptユーザーがC#に挑戦だ

Internet Exploerの使い方(まとめ中)

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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABy0uQtO+/y+Fjq9v8Bw/z/BZzu/5evkP/38Zn/
//ug///+of/MlTz3s3wp06lvHc6obh3Pp24dz6dtHc+mbBzPpWwc0KRrHNCjaxzRomob0aFp
G9KhaRvSoGgb059nG9OeZxrUnWYa1JxlGtWaZBnVmGIZbwAAAAAAAAAAAAAAAAAAAABkw8Hs
ne32/xjh/P8Atf//K5/I/9PSkP/++6L///6i///+pP///6T///+k////pP///6T///+k///+
pP///qP///yi///7ov//+aD///ib///0lv//74z//+t8//zebP/00Fr/7blD/9iWJPyaZBnB
AAAAAAAAAAAAAAAAAAAAAJyLUM2e7Pb/evj9/wDU//8Anf//bays/+vomf///qP///6k////
pP///6T///+k////pP///6T///6k///+pP///KL///yi///5oP//+J3///WY///wjf//63//
/eBt//bSWv/tvET/3Jkj/JxlGsMAAAAAAAAAAAAAAAAAAAAAsHcluYLEy/619/z/R/T//wDE
//8Cnff/iLOi//Hwnv///qL///2g///8nv//+p7///qe///6nv//+p7///qe///6nP//+Jv/
/vid//71mv//8ZP///KO///rf//932z/9tJa/+28Q//XlSP5nWYatAAAAAAAAAAAAAAAAAAA
AAC0dyCWwMiP+pLf9f+r/f7/I+v//wC8//8Hnuv/psGd/8mUO/a0fSjPrXEezKxxHsyrcB7N
qnAdzqlvHc6pbx3PqG4dz6dtHc+ocB/QxIw1+fzqjf//8o7//+l9//zeaf/1z1j/67hA/8yL
IPSeZxqTAAAAAAAAAAAAAAAAAAAAALR3IGnkvWLustW4/638/f+Y////EOL//wC1//8SpuD/
l3xA1a5zHhEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWocB/Q++mM///v
iv//5nn/+dpo//PKUv/osDj/u3sl6p5nHGMAAAAAAAAAAAAAAAAAAAAAtXggMcyZQNvp4pD/
isvL/7n+//+F////BNz//wCy//8rlbj1qXMkSQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAqG4dQsKTQt7+6oj//+2F//3kcv/41WH/8MRN/+WpMf+qbyPbnWYcKgAAAAAAAAAA
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
/wAAMf/AAAH/8AAB///AA///8A8=

FTPUpload(sample)

FTP Upload
System.Xml の参照設定が必要

settings.xmlの例

<FtpUpClass>
  <UserName>655123</UserName>
  <Password>win123</Password>
  <SourceFolder>C:\tmp</SourceFolder>
  <LogFolder>C:\LOG</LogFolder>
  <FtpServer>ftp://192.168.1.1/test</FtpServer>
</FtpUpClass>
using System;
using System.IO;
using System.Net;
using System.Threading;
using System.Diagnostics;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Serialization;

public class FtpUpClass
{
	public string UserName;
	public string Password;
	public string SourceFolder;
	public string LogFolder;
	public string FtpServer;
}

class Program
{
	static void Main()
	{
		XmlSerializer serializer = new XmlSerializer ( typeof ( FtpUpClass ));
		FileStream fs = new FileStream ( Directory .GetCurrentDirectory() + "\\" + "settings.xml" , FileMode .Open);
		FtpUpClass settings = ( FtpUpClass )serializer.Deserialize(fs);
		fs.Close();
		
		string destinationFolder;
		string uri;
		string filename;
		string logFileName;
		string logDateFolder;
	
		Dictionary < string , string > dict = new Dictionary < string , string >();
		dict[ @"btest_\d{8}\.zip$" ] = "folder_b" ;
		dict[ @"dtest_\d{8}\.zip$" ] = "folder_d" ;
		dict[ @"stest_\d{8}\.zip$" ] = "folder_s" ;
		dict[ @"ttest_\d{8}\.zip$" ] = "folder_t" ;
		dict[ @"I123_ptn|num_\d{8}\.zip$" ] = "p_folder" ;
		
		logDateFolder = CreateDateFolder(settings.LogFolder);
		logFileName = Path .Combine(logDateFolder, DateTime .Today.ToString( "yyyyMMdd" ) + "FTP.log" );
		
		DefaultTraceListener drl;
		drl = ( DefaultTraceListener ) Trace .Listeners[ "Default" ];
		drl.LogFileName = logFileName;
		drl.WriteLine(System. DateTime .Now + " " + " 開始");
	
		try
		{
			WebClient wc = new WebClient ();
			wc.Credentials = new NetworkCredential (settings.UserName,settings.Password);
			foreach ( string key in dict.Keys){
			string [] files = FindFiles(settings.SourceFolder,key,"*.zip",true);
			foreach ( string file in files)
			{
				filename = Path .GetFileName(file);
				destinationFolder = dict[key];
				uri = settings.FtpServer + destinationFolder + "/" + filename;
				wc.UploadFile(uri, file);
				drl.WriteLine(System. DateTime .Now + " " + file);
			}
		}
		wc.Dispose();
		drl.WriteLine(System. DateTime .Now + " " + " 終了");
		} catch (System. Exception ex){
			drl.WriteLine(System. DateTime .Now + " " + ex.Message);
		}
	}
	
        使用する関数
	static string [] FindFiles( string path, string pattern, string wildcard, bool ignorecase)
	static string CreateDateFolder( string targetFolder)

フォルダ内のファイル名をワイルドカードで検索し、更に正規表現で検索する

フォルダ内のファイル名をワイルドカードで検索し、更に正規表現で検索する<参考>
fenri's diary
正規表現を使用してファイルを探す
http://fenri.hatenablog.com/entry/2014/05/15/191224

smdn:総武ソフトウェア推進所
正規表現
http://smdn.jp/programming/netfx/regex/


動作確認済

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace SampleKese
{
    /*
     * 
     */
    class Program
    {
        static void Main(string[] args)
        {
            string[] files = FindFiles(@"C:\tmp", @"Hoge0123_up|dn_\d{8}\.zip$", "*.zip", true);
            foreach (string file in files)
            {
                Console.WriteLine(file);
            }
        }

        /*
         * フォルダ内のファイル名をワイルドカードで検索し、更に正規表現で検索する。
         * path:       対象フォルダ
         * pattern:    正規表現
         * wildcard:   ワイルドカード
         * ignorecase: trueの時大文字小文字を区別しない。既定値はtrue
         */
        static string[] FindFiles(string path, string pattern, string wildcard, bool ignorecase)
        {
            List<string> lst = new List<string>();
            RegexOptions opt = RegexOptions.None;
            if (ignorecase) opt |= RegexOptions.IgnoreCase;
            Regex reg = new Regex(pattern, opt);
            DirectoryInfo dir = new DirectoryInfo(path);
            FileInfo[] files = dir.GetFiles(wildcard);
            foreach (FileInfo f in files)
            {
                if (reg.IsMatch(f.FullName))
                {
                    lst.Add(f.FullName);
                }
            }
            //return ((string[])lst.ToArray());
            return lst.ToArray();
        }
    }
}

1D1K

EV
2016.06.15 SQL*Plusで直前に実行したSQLを再実行  / , run
2016.06.15 WindowsFTPクライアントとして、(1)エクスプローラ、(2)Internet Explorer、(3)ftp.exeの3つがある。
2016.06.15 WindowsFTP.exeはFTP PASVモードをサポートしていない
2016.06.15 FFFTPやエクスプローラでFTPフォルダを移動してもフォルダ内のファイルは更新されない。リフレッシュしなければならない。
2016.06.16 .NETプログラムによりFTPサーバへのアクセスは①WebClientクラスによる方法と②FtpWebRequest、FtpWebResponseによる方法がある
2016.06.16 編集中FTPでフォルダをサーバにアップロー

PAP
2016.06.17 Windowsで巨大なファイルを簡単に作る方法 fsutil
2016.06.17 SQL*LOADERサンプル
2016.06.17 PowerShellFTPサーバに接続する手順(WEB Client方式)
2016.06.17 パスワード安全保管(他PC,他ユーザでは複合できない方法)
2016.06.17 FTPはWebClientが楽
2016.06.20 AutomateIt Android自動化
2016.06.20 タスクスケジューラコマンド実行
2016.06.20 タスクスケジューラの継続時間、停止するまでの時間、繰り返し間隔
2016.06.21 FWの設定でFTPPassiveモードのみ通す時の動き
2016.06.21 FTPのURIの書き方
2016.06.22 FTPアップロードサンプル(ハッシュテーブル、XMLファイル)
2016.06.28 Oracle ロック解除方法
2016.06.28 JAVA 配列、リスト、マップ
2016.06.29 PowerShellで関数を呼出す時の引数は、カンマではなくスペースで区切る。括弧も不要。
2016.06.30 PowerShellで文字列リテラルを指定するクォーテーションマークの違い(シングル、ダブル)
2016.06.30 PowerShell ドット+スペースでインクルード
2016.07.01 PowerShell内C#でvarが使えない理由
2016.07.01 C#でMid,Left,Rightの代わりになるものは
2016.07.01 ハッシュテーブルを使うには
2016.07.01 PowerShellC#でマウスクリックを行う(その2)
2016.07.01 C#で設定をXMLファイルに保存・読み込み
2016.07.02 static(図書本)
2016.07.02 エントリポイントMainメソッドの宣言は4種類

 

日付フォルダを作成

C# で日付フォルダを作成してみた。

 

using System;
using System.IO;

        static string CreateDateFolder(string targetFolder)
        {
            string folderName = Path.Combine(targetFolder, DateTime.Today.ToString("yyyyMMdd"));
            if(!Directory.Exists(folderName))
            {
                Directory.CreateDirectory(folderName);
            }
            return folderName;
        }