『質問です c\test\のホルダー中にcsvファイルが複数あります その.. – 人力検索はてな』より。
■問題
C:\test\フォルダーには複数のCSVファイルが置かれています。
そして、CSVファイルはA~E列のいずれかにメールアドレスが記載されています。
たとえば次のようになります。
C:\test\01.csv
A@docomo.ne.jp | B | C | D | E |
A | B@docomo.ne.jp | C | D | E |
A | B | C@docomo.ne.jp | D | E |
A | B | C | D@docomo.ne.jp | E |
A | B | C | D | E@docomo.ne.jp |
C:\test\02.csv
a@docomo.ne.jp | b | c | d | e |
a | b@docomo.ne.jp | c | d | e |
a | b | c@docomo.ne.jp | d | e |
a | b | c | d@docomo.ne.jp | e |
a | b | c | d | e@docomo.ne.jp |
このCSVファイルから、メールアドレスだけを取り出して、新しいCSVファイルを作成します。
A@docomo.ne.jp |
B@docomo.ne.jp |
C@docomo.ne.jp |
D@docomo.ne.jp |
E@docomo.ne.jp |
a@docomo.ne.jp |
b@docomo.ne.jp |
c@docomo.ne.jp |
d@docomo.ne.jp |
e@docomo.ne.jp |
■解決方法
まず、「nextCSV CSVファイル編集ソフト」を使って、CSVファイルからメールアドレスを取り出して、新しいCSVファイルを作成します。
次に、「DirCommand フォルダー内ファイル一括処理ソフト」を使って、フォルダー中のCSVファイルに対して、「nextCSV CSVファイル編集ソフト」の処理を行うようにします。
(1)「nextCSV CSVファイル編集ソフト」を使って、CSVファイルからメールアドレスを取り出す
「nextCSV CSVファイル編集ソフト」を起動し、「C:\test\01.csv」を開きます。
A列以外の列を削除します。
A列を編集します。
「追加する列の形式」欄から「結合列」を選択します。
A列からE列までのすべての列を追加します。
「結合文字列」欄に「\n」と入力します。
「結合文字列にエスケープ文字を使用する」を選択します。
これで、「変換されたセルの値」欄に表示されているように、セルにはA列からE列までのセルの値が一行ずつ入ります。
「変換条件」の「追加」ボタンを押します。
「セルの値を正規表現で置換する」を選択し、「検索文字列」欄に「^[^@]$」、「置換文字列」欄に「 」(半角スペース)を入力します。
この条件は、@のない行を半角スペースに置き換える条件です。
「OK」ボタンを押し、変換条件を登録します。
「変換条件」の「追加」ボタンを押します。
「各行の前後の空白を削除する」を選択します。
「OK」ボタンを押し、変換条件を登録します。
「変換条件」の「追加」ボタンを押します。
「セルの改行コードを削除して一行にする」を選択します。
「OK」ボタンを押し、変換条件を登録します。
これでセルの値から@の文字がない行が取り除かれるようになりました。
「OK」ボタンを押し、メイン画面に戻ります。
A列には、メールアドレスだけが表示されています。
メニューの「ファイル」-「名前を付けて保存」を選択します。
「C:\data\sample.nxc」に保存します。
※保存する場所は他の場所でも問題ありません。
メニューの「ファイル」-「自動実行ファイルの作成」を選択します。
「設定ファイルのパス」欄に先ほど保存した場所(C:\data\sample.nxc)を指定します。
「CSVファイルの保存場所」欄に作成したCSVファイルを保存する場所を指定します。
「C:\data\mailaddress.csv」に保存します。
「同名のファイルがあるときの処理」欄の「追記」をチェックします。
「作成」ボタンを押し、バッチファイルを作成します。
「C:\test\test.bat」に保存します。
※保存場所は他の場所でも問題ありません。
作成した自動実行バッチファイルを実行すると、「01.CSV」からメールアドレスを取り出してmailaddress.CSVに保存されます。
これで、CSVファイルからメールアドレスを取り出して、新しいCSVファイルを作成できるようになりました。
(2)「DirCommand フォルダー内ファイル一括処理ソフト」を使って、フォルダー中のCSVファイルに対して、「nextCSV CSVファイル編集ソフト」の処理を行う
「DirCommand フォルダー内ファイル一括処理ソフト」を起動します。
「フォルダー」欄の「参照」ボタンを押し、「C:\test\」フォルダーを指定します。
CSVファイルだけを処理したいので、「対象ファイルの拡張子」欄に「csv」と入力します。
「実行プログラム」タブを選択します。
「追加」ボタンを押します。
「コマンドラインから」ボタンを押します。
「参照」ボタンを押し、「nextCSV CSVファイル編集ソフト」の自動実行バッチファイル(C:\test\test.bat)を選択します。
コマンドラインが設定されます。
「OK」ボタンをします。
実行プログラム編集画面に戻ります。
プログラム欄と引数欄が設定されます。
引数欄に「 “-f=?fullpath?”」を追加します。
※”-fの前に半角スペースがあります。
「nextCSV CSVファイル編集ソフト」の引数「-f=~」は、読み込むCSVファイルの場所を指定します。
「?fullpath?」は実行時に、C:\test\フォルダー中のファイル名に置き換えられます。
つまり、実行時に「nextCSV CSVファイル編集ソフト」は、C:\test\フォルダー中のファイルを読み込み、設定されている処理(メールアドレスの抽出)を行い、C:\test\mailaddress.csvに保存します。
「OK」ボタンをします。
メイン画面に戻ります。
プログラムが設定されます。
「実行」ボタンを押します。
「nextCSV CSVファイル編集ソフト」が実行され、mailaddress.csvにメールアドレスが登録されました。
設定を保存して、自動実行バッチファイルを作成すると、次回からの作業が自動化できます。