2012年8月2日木曜日

MailAddressをBATファイルで整理する

Hello@Osaka.jpcom
OK@Osaka.jpcom
Yes@Osaka.jpcom
Hello_MYLove@Osaka.jpcom
Hello@Kyoto.jpnet
OKOK@Kyoto.jpnet
We123love@world.comjp

を、ローカル部分とドメインに分けて、書き出したいとき、1行のバッチファイルで簡単に出来ます。

@echo off
for /f "usebackq tokens=1-2* delims=@" %%a in ("MailAddress.txt") do (
echo %%a %%b)
pause
SkyDriveにBatファイルとメールアドレスを書いたテキストファイルが入っています。
SkyDrive のページでCountLetterのフォルダにチェックを入れて、右端のダウンロードをクリックしてください。 

桁を揃えて連番をすばやく作るバッチファイル

例えば、
「1から500までの間で連番のリストを作りたい。 そのときに、数字が一桁の場合は001、数字が2桁の場合は013というように常に表示が三桁になって桁が揃うようにしたい」
さらに
「1つおきに連番を作成したい」
なんていうことは結構日常的に発生することではないでしょうか?
そんなときには、次のバッチファイルが、作業を簡単に、あっという間に完了してくれます。


set /p StartNo=開始する番号を :
set /p FinalNo=最後の番号を :
set /p Kijun=(例)連続の場合は1 1つおきの場合は2、7つおきの場合は8 :
ここで、開始する番号、最後の番号、そして、連続か、非連続かを決定します。
連続、たとえば、1 2 3 4 5 6........としたい場合は1
非連続、たとえば、1 4 7 10 13 16........と2つおきにしたい場合は3という風に設定します。

if %%a leq 99 (
if %%a leq 9 (
set Num=00%%a) else (
set Num=0%%a)) else (
set Num=%%a)
echo !Num!)
ここで、該当する数字の桁数によって、数字の前につける0の数を決定します。
もしも数字が1桁なら00
もしも数字が2桁なら0
もしも数字が3桁なら0をつけない

@echo off
setlocal enabledelayedexpansion

set /p StartNo=開始する番号を :
set /p FinalNo=最後の番号を :
set /p Kijun=(例)連続の場合は1 1つおきの場合は2、7つおきの場合は8 :

for /l %%a in (%StartNo%,%Kijun%,%FinalNo%) do (
if %%a leq 99 (
if %%a leq 9 (
set Num=00%%a) else (
set Num=0%%a)) else (
set Num=%%a)
echo !Num!>>Test.txt)
pause 
このバッチファイルの使い方
1:スクリプトを全てコピーして、テキストエディタ(メモ帳)に貼り付ける。
2:出力結果を保存したいフォルダに、Renban.batとして保存する。
3:起動し、開始番号、終了番号、間隔を入力してEnterキーを押す。

上のサンプルの場合、Test.txtに保存されます。
保存ファイル名を変えたい場合は、保存したBatファイルの中の、Test.txtの部分を変更してください。
CSVファイル、HTMLファイルにも変更できます。


年・月ごとのフォルダを作り、日付ごとのテキストファイルを作る

2000年から、2030年までの年毎のフォルダを作って、その中に月毎のフォルダを作り、そのなかにそれぞれの日付のテキストファイルを作る。
更にそのファイルに、あらかじめ日付を入力しておく


こんなことを、手でやってたら、発狂します。
そこで、下のBATファイルを使うと、30年分くらいなら、2分くらいで完了します。 
set /p Sy=開始年を :
set /p Ey=最終年を :
開始する年と最後の年を西暦4桁で入力します。
set tuki=%%m
if %%m leq 9 set tuki=0%%m  
月が1-9の場合、前に0を置いて桁を2桁にそろえる処理をします。

set day=%%e
if %%e leq 9 set day=0%%e 
日が1-9の場合、前に0を置いて桁を2桁にそろえる処理をします。 

for %%d in (1,3,5,7,8,10,12) do if %%m==%%d set Ld=31
for %%d in (4,6,9,11) do if %%m==%%d set Ld=30
if %%m==2 (
set /a Ymod=%%y%%Amari%
echo !Ymod!
if !Ymod!==0 set Ld=29
if !Ymod! geq 1 set Ld=28)
月が、 1,3,5,7,8,10,12 のとき、月の最終日を31日に設定
月が、 4,6,9,11 のとき、月の最終日を30日に設定
月が、2のとき、うるう年でなければ月の最終日を28日、うるう年なら月の最終日を29日に設定


@echo off
setlocal enabledelayedexpansion

set /p Sy=開始年を :
set /p Ey=最終年を :
set Amari=4
for /l %%y in (%Sy%,1,%Ey%) do (
if not exist %%y md %%y
for /l %%m in (1,1,12) do (
set tuki=%%m
if %%m leq 9 set tuki=0%%m
if not exist %%y\!tuki! md %%y\!tuki!
for %%d in (1,3,5,7,8,10,12) do if %%m==%%d set Ld=31
for %%d in (4,6,9,11) do if %%m==%%d set Ld=30
if %%m==2 (
set /a Ymod=%%y%%Amari%
echo !Ymod!
if !Ymod!==0 set Ld=29
if !Ymod! geq 1 set Ld=28)
for /l %%e in (1,1,!Ld!) do (
set day=%%e
if %%e leq 9 set day=0%%e
if not exist %%y\!tuki!\!day!.txt (
copy nul %%y\!tuki!\!day!.txt
echo %%y年!tuki!月!day!日>>%%y\!tuki!\!day!.txt
)
)))
pause 

このバッチファイルの使い方:
1:上の太文字部分を全てコピーして、テキストファイル(メモ帳)に貼り付ける。
2:MakeMonthlyFolder.batとして保存する。
3:ディレクトリを作成したい場所に置く。*例えば、上の例で、My Documentsにディレクトリを生成したい場合は、My DocumentsにMakeMonthlyFolder.batを置く。

連番のテキストファイルを簡単に生成するには?!

たとえば、Osakaというフォルダに、Osaka001、Osaka002、Osaka003・・・・・と連番でテキストファイル(TXTファイル)を作りたいとき、面倒なことが、2つあります。

* 面倒その一:言うまでもなく、Osakaというフォルダを作らなければいけない面倒。
* 面倒その二:言うまでもなく、Osakaというフォルダが存在したとして、その下に何個のファイルが今存在しているのか、分からないのでイチイチフォルダを開けて、確認してからファイルを生成しなければいけない面倒。

この2つの面倒を一挙に解決して処理するのが、下のバッチファイルです。
set /p dire=ディレクトリの名前 :
if not exist %dire% md %dire%
まずここ処理したいディレクトリの名前を決定します。
もしも該当のディレクトリがない場合、ディレクトリを生成します。

set count=1
for %%a in (%dire%\txt\*.txt) do (
set /a count+=1)
if !count! leq 99 (
if !count! leq 9 (
set num=00!count!) else (
set num=0!count!)) else (
set num=!count!)

ここで処理対象のディレクトリのなかに何個既にファイルが存在しているかを数えます。そして、新規に生成するテキストファイルに当てる連番の番号を決定し、三桁に変換します。

copy nul %dire%\%fname%
start "" "%dire%\%fname%"

処理対象のディレクトリの中に決定した連番を当てたTXTファイルを生成します。


@echo off
setlocal enabledelayedexpansion

set /p dire=ディレクトリの名前 :
if not exist %dire% md %dire%

set count=1
for %%a in (%dire%\txt\*.txt) do (
set /a count+=1)
if !count! leq 99 (
if !count! leq 9 (
set num=00!count!) else (
set num=0!count!)) else (
set num=!count!)
set fname=%dire%!num!.txt
copy nul %dire%\%fname%
start "" "%dire%\%fname%"
pause


このバッチファイルの使い方:
1:上の太文字部分を全てコピーして、テキストファイル(メモ帳)に貼り付ける。
2:TXTFileMaker.batとして保存する。
3:ディレクトリを作成したい場所に置く。*例えば、上の例で、My DocumentsにOsakaというディレクトリを生成したい場合は、My DocumentsにTXTFileMaker.batを置く。