約 2,924,616 件
https://w.atwiki.jp/kimikage/pages/127.html
XMLよりもデータサイズが小さくなるので、データのやり取りにはこちらを使った方がいいかも using Microsoft.Win32; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.Serialization.Json; using System.Windows; namespace WpfApp { /// summary /// MainWindow.xaml の相互作用ロジック /// /summary public partial class MainWindow Window { /// summary /// ファイルのフィルタ /// /summary private const string FILTER = "*.test|*.test"; /// summary /// 設定のproperty /// /summary private ValuesClass FormParams { get { return new ValuesClass() { Val1 = (int)cmbVal1.SelectedValue, Val2 = txtVal2.Text, Val3 = (bool)chkVal3.IsChecked, }; } set { if (value != null) { cmbVal1.SelectedValue = value.Val1; txtVal2.Text = value.Val2; chkVal3.IsChecked = value.Val3; } } } /// summary /// コンストラクタ /// /summary public MainWindow() { // コンポーネントの初期化 InitializeComponent(); InitCmb(); } /// summary /// open file button click /// /summary /// param name="sender" /param /// param name="e" /param private void BtnLoad_Click(object sender, RoutedEventArgs e) { OpenFile(); } /// summary /// save file button click /// /summary /// param name="sender" /param /// param name="e" /param private void BtnSave_Click(object sender, RoutedEventArgs e) { SaveFile(); } /// summary /// JSONファイルの読み込み /// /summary private void OpenFile() { try { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = FILTER; openFileDialog.ShowDialog(this); // ファイルが選択されているか? if (openFileDialog.FileNames.Length 0) { // ファイルをOPEN using (FileStream stream = File.Open(openFileDialog.FileNames.First(), FileMode.Open)) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ValuesClass)); FormParams = (ValuesClass)serializer.ReadObject(stream); } MessageBox.Show(string.Format("\"{0}\"から設定ファイルを読み込みました。", openFileDialog.FileNames.First())); } } catch (Exception e) { MessageBox.Show(e.Message); } } /// summary /// JSONファイルの保存 /// /summary private void SaveFile() { try { SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.Filter = FILTER; saveFileDialog.ShowDialog(this); // ファイルが選択されているか? if (saveFileDialog.FileNames.Length 0) { // 上書きモードでファイルをOPEN using (FileStream stream = File.Open(saveFileDialog.FileNames.First(), FileMode.Create)) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ValuesClass)); serializer.WriteObject(stream, FormParams); } MessageBox.Show(string.Format("設定ファイルを\"{0}\"へ保存しました。", saveFileDialog.FileNames.First())); } } catch (Exception e) { MessageBox.Show(e.Message); } } /// summary /// コンボボックスの初期化 /// /summary private void InitCmb() { Dictionary int, string dic = new Dictionary int, string { {1, "あ"}, {2, "い"}, {3, "う"}, }; // binding cmbVal1.ItemsSource = dic; cmbVal1.DisplayMemberPath = "Value"; cmbVal1.SelectedValuePath = "Key"; cmbVal1.SelectedIndex = 0; } /// summary /// JSONで読み書きするclass /// /summary public class ValuesClass { public int Val1 { get; set; } public string Val2 { get; set; } public bool Val3 { get; set; } } } } サンプルソース
https://w.atwiki.jp/kimikage/pages/44.html
1)引数を渡す @ECHO OFF REM SUBFUNCという関数に引数("20"と"男")を渡している。 CALL SUBFUNC "20" "男" GOTO END SUBFUNC ECHO 私は%~1歳の%~2です! GOTO EOF END PAUSE
https://w.atwiki.jp/kimikage/pages/135.html
正規表現で文字列の置換や、パターンマッチチェックを行います 置換 ※RegexOptions.Singleline:stringを1行として扱う RegexOptions.Multiline:stringが1行(改行コード区切り)毎に処理する using System.Text.RegularExpressions; using System.Windows.Forms; namespace WindowsFormsApplication4 { public partial class Form1 Form { /// summary /// コンストラクタ /// /summary public Form1() { InitializeComponent(); MessageBox.Show( Regex.Replace( "1A2B3", "(\\d)", "[$1]", RegexOptions.Singleline)); } } } using System.Text.RegularExpressions; using System.Windows.Forms; namespace WindowsFormsApplication4 { public partial class Form1 Form { /// summary /// コンストラクタ /// /summary public Form1() { InitializeComponent(); MessageBox.Show( Regex.Replace( "1A2B3", "\\d", new MatchEvaluator(m = int.Parse(m.Value).ToString("D3")), RegexOptions.Singleline)); } } }
https://w.atwiki.jp/kimikage/pages/105.html
「=」の左の変数に、右の値が代入されます。 // numに1を代入します。 int num = 1; // メッセージボックスに「1」が表示されます。 MessageBox.Show(num.ToString()); int num1; int num2 = 12; // num1にnum2の値を代入します。 num1 = num2; // メッセージボックスに「12」が表示されます。 MessageBox.Show(num1.ToString()); int num1 = 1; int num2 = 12; // num1とnum2を足し合わせた値をnum3に代入します。 int num3 = num1 + num2; // メッセージボックスにnum1とnum2を足し合わせた値「13」が表示されます。 MessageBox.Show(num1.ToString()); string str1 = "わ"; string str2 = "ん"; // str1とstr2を足し合わせた値をstr3に代入します。 string str3 = str1 + str2; // メッセージボックスにstr1とstr2を足し合わせた値「わん」が表示されます。 MessageBox.Show(str3);
https://w.atwiki.jp/kimikage/pages/46.html
1)処理を一時停止 @ECHO OFF PAUSE
https://w.atwiki.jp/kimikage/pages/103.html
①画面左の「ツールボックス」タブを開いて、「Button」を選択します ②画面中央の「MainWindow.xaml」のデザイナ上をクリック(またはドラッグアンドドロップ)して「Button」を追加します ③画面右下のプロパティ画面のボタンをクリックしてイベントハンドラ画面を表示します ④「Click」の右側のテキストボックスをダブルクリックすると、「Button」が「Click」された時に実行されるメソッド「Button_Click_1」が追加されます ⑤「Button」が「Click」された時に、メッセージボックスを出力するコードを実装します // メッセージを出力 MessageBox.Show("WOW"); ⑥メニューバーのボタンをクリックしてデバッグを開始します ⑦画面が起動します。 ⑧「Button」を「Click」するとメッセージボックスが出力されます サンプルソース
https://w.atwiki.jp/kimikage/pages/40.html
1)空ファイル作成 TYPE nul "ファイル名" 例) TYPE nul "test.txt" 2)ファイル削除 DEL "ファイル名" 例) DEL "test.txt" 3)ファイル名の末尾が空白やピリオドのファイル削除 DEL "\\?\ファイルフルパス" 例)test.txtというファイルを削除 DEL "\\?\C \test.txt" 4)フォルダ丸ごと削除 RD /S /Q フォルダ名 例)folderという名前のフォルダを削除 RD /S /Q "folder" 5)ファイル分割 SPLIT 入力ファイル名 -b ファイルサイズk 出力ファイル名 例)5KBで分割 SPLIT infile.txt -b 5k outfile.txt. ※SPLITコマンドを使うためには、SPLIT.EXEとそれに関連するDLLが必要です。 SPLIT.EXEは下記のリンクから入手可能です。 CoreUtils for Windows 6)ファイル結合 SPLIT.EXE等にて分割したファイルを結合します。 例)file.txt.aa、file.txt.ab、file.txt.acを結合したファイルmerge.txtを作る TYPE nul merge.txt COPY /B "merge.txt" + "file.txt.aa" COPY /B "merge.txt" + "file.txt.ab" COPY /B "merge.txt" + "file.txt.ac" または COPY /B "file.txt.aa" "merge.txt" COPY /B "merge.txt" + "file.txt.ab" COPY /B "merge.txt" + "file.txt.ac" ※ファイルは昇順に結合すること。file.txt.001、file.txt.002、file.txt.003などのファイルも同様の操作で結合可能。 7)ソート("a.txt"の中身をソートして"b.txt"に書き出す) @ECHO OFF SORT "a.txt" "b.txt" PAUSE 8)ファイルコピー COPY /y コピー元 コピー先 ※/y:上書きの場合、確認メッセージを表示しない 例)"C \CopyFrom\"の拡張子が".dll"のファイルを"C \CopyTo\"へコピーする COPY /y "C \CopyFrom\*.dll" "C \CopyTo\" 9)フォルダ検索 @ECHO OFF SET TargetDir=TargetDir SET TestDir=C \BatTest\ SET TestDirSub1=%TestDir%Sub1\%TargetDir%\ SET TestDirSub2=%TestDir%Sub2\%TargetDir%\ CALL MKDIRFUNC %TestDirSub1% CALL MKDIRFUNC %TestDirSub2% CD %TestDir% ECHO %TestDir%のフォルダ内に「%TargetDir%」フォルダが存在するかどうか検索します FOR /F "delims=;" %%i IN ( dir %TargetDir% /ad/b/s ) DO ( ECHO %%i ) GOTO END MKDIRFUNC SET target=%~1 IF NOT EXIST %target% ( MKDIR %target% ) GOTO EOF END PAUSE
https://w.atwiki.jp/kimikage/pages/36.html
1)代入 @ECHO OFF SET hensu=変数 ECHO %hensu% PAUSE 2)計算 @ECHO OFF SET a=1 SET b=2 SET /A c=a+b ECHO %c% PAUSE 3)キーボード入力受付 @ECHO OFF SET /P in=なんか入力して! ECHO 「%in%」だなんて!なんてお下品なの!? PAUSE ※因みに「Alt+半角/全角」で、コマンドプロンプトで日本語入力できます 4)文字列の足し算 @ECHO OFF SET a=あ SET b=い SET c=%a%%b%う ECHO %c% PAUSE
https://w.atwiki.jp/kimikage/pages/106.html
変数には値型の変数と参照型の変数があります 値型の変数と参照型の変数の違いは、以下の通りです 値型 値そのものを格納します 参照型 値の格納場所の情報(参照先のアドレス)を格納します 各型のイメージ ①値型 ②参照型 各型の実装例 ①値型 // 値型の変数str1,str2を宣言します //////////////// // str1 = ? // str2 = ? //////////////// string str1, str2; // 変数str1に、文字列"あ"を代入します //////////////// // str1 = "あ" // str2 = ? //////////////// str1 = "あ"; // 変数str2に、変数str1に格納されている値を代入します //////////////// // str1 = "あ" // str2 = "あ" //////////////// str2 = str1; // 変数str2に、"ん"を追加します //////////////// // str1 = "あ" // str2 = "あん" //////////////// str2 += "ん"; // メッセージボックスを出力します MessageBox.Show(string.Format("str1:{0}\nstr2:{1}", str1, str2)); サンプルソース ②参照型 // 参照型の変数cls1,cls2を宣言します //////////////// // cls1 = null // cls2 = null //////////////// TestClass cls1, cls2; // 変数cls1に新しいインスタンス①のアドレスを代入します //////////////// // cls1 = インスタンス①のアドレス // cls2 = null //////////////// cls1 = new TestClass(); // 変数cls2に、変数cls1に格納されている値を代入します //////////////// // cls1 = インスタンス①のアドレス // cls2 = インスタンス①のアドレス //////////////// cls2 = cls1; // 変数cls2の参照先のインスタンス①のVal1の値を変更します //////////////// // cls1 = インスタンス①のアドレス // cls2 = インスタンス①のアドレス //////////////// cls2.Val1 = "あ"; // メッセージボックスを出力します // 両方とも同じインスタンス①を参照しているので、同じ値が出力されます MessageBox.Show(string.Format("cls1:{0}\ncls2:{1}", cls1.Val1, cls2.Val1)); /// summary /// テストクラス /// /summary class TestClass { public string Val1 { get; set; } } サンプルソース
https://w.atwiki.jp/kimikage/pages/41.html
結合バッチを作ってみました。 万が一使用する人がいたとしたら、自己責任で使用してください。 当バッチを使って起きた問題に対して、僕は一切責任を負いません。 join.bat @ECHO OFF ECHO ■■■■■■■■■■■■■ ECHO ■【ファイル結合バッチ】■ ECHO ■■■■■■■■■■■■■ REM ****************************************************** REM *【説明】 * REM * 分割されたファイルを結合します。 * REM * 拡張子が、".001、.002、…"、または、".aa、.ab、…" * REM * であるファイルをCOPYコマンドを使用して結合します。 * REM ****************************************************** REM ********************************************************************************* REM *【使用方法】 * REM * ①結合したいファイルを当バッチファイルと同じフォルダに配置します。 * REM * ②結合したいファイルを選択し、当バッチファイルにドラッグアンドドロップします。* REM * ③メッセージにしたがって、ファイルを結合します。 * REM ********************************************************************************* REM ---バッチファイルのフォルダに移動------------------------- CD /D %~dp0 REM ---一時ファイル名と結合先ファイル名の宣言----------------- SET tmpfilelist=join.tmp.list.txt SET tmpfilesort=join.tmp.sort.txt SET outfname=%~n1 SET FCNT=0 REM ---ファイルの存在チェック--------------------------------- IF EXIST "%tmpfilelist%" ( CALL ERROR "0" %tmpfilelist% GOTO END ) IF EXIST "%tmpfilesort%" ( CALL ERROR "0" %tmpfilesort% GOTO END ) IF EXIST "%outfname%" ( CALL ERROR "1" %outfname% GOTO END ) REM ---マージ用にファイル名をソートしてファイルに書き出し----- ECHO; ECHO ■【結合元ファイル一覧】 TYPE nul "%tmpfilelist%" FOR %%i IN (%*) DO ( IF "%%~dpi" NEQ "%~dp0" ( CALL ERROR "2" %%i GOTO END ) IF NOT EXIST "%%~nxi\" ( ECHO %%~nxi "%tmpfilelist%" ECHO ■ %%~nxi SET /A FCNT+=1 ) ) REM ---結合ファイル数のチェック------------------------------- IF %FCNT% LSS 2 ( CALL ERROR "3" GOTO END ) REM ---結合の確認メッセージ----------------------------------- ECHO; ECHO ■【結合先ファイル】 ECHO ■ %outfname% ECHO ■に【結合元ファイル一覧】のファイルを結合します。 SET /P input=■結合してもよろしいですか?(はい:Y、いいえ:N): IF /I "%input%" NEQ "y" ( ECHO ■処理を中断します。 CALL DELTMP GOTO END ) REM ---結合処理----------------------------------------------- ECHO; ECHO ■結合処理を開始しました。 SORT "%tmpfilelist%" "%tmpfilesort%" SET CNT=0 FOR /F "delims=" %%i IN (%tmpfilesort%) DO ( CALL JOIN "%%i" ) CALL DELTMP ECHO ■結合処理が完了しました。 GOTO END REM ---エラー処理--------------------------------------------- ERROR ECHO; ECHO ■!!!エラー!!! IF %1 EQU "0" ( REM 一時ファイルの存在チェックエラー ECHO ■【一時ファイル】 ECHO ■ %2 ECHO ■を削除してください。 ) ELSE IF %1 EQU "1" ( REM 結合先ファイルの存在チェックエラー ECHO ■【結合先ファイル】 ECHO ■ %2 ECHO ■が既に存在します。 ) ELSE IF %1 EQU "2" ( REM 結合元ファイルの配置エラー ECHO ■【結合元ファイル】 ECHO ■ %2 ECHO ■をバッチファイルと同じフォルダに配置してください。 CALL DELTMP ) ELSE IF %1 EQU "3" ( REM ファイル数が2つより少ない ECHO ■ 結合したいファイルを2つ以上選択し、 ECHO ■ 当バッチファイルにドラッグ&ドロップしてください。 CALL DELTMP ) ECHO ■処理を中断します。 GOTO EOF REM ---一時ファイルの削除処理--------------------------------- DELTMP IF EXIST "%tmpfilelist%" ( DEL "%tmpfilelist%" ) IF EXIST "%tmpfilesort%" ( DEL "%tmpfilesort%" ) GOTO EOF REM ---結合処理----------------------------------------------- JOIN SET /A CNT+=1 ECHO ■%CNT%つめのファイルを結合中 IF %CNT% EQU 1 ( COPY /B "%~nx1" "%outfname%" ) ELSE ( COPY /B "%outfname%" + "%~nx1" ) GOTO EOF REM ---終了処理----------------------------------------------- END ECHO; ECHO ■処理が完了しました。 PAUSE