2015年02月25日

INIファイルの内容取り出し


■test.bat
@ECHO OFF
REM INIファイルの内容取り出し
FOR /F "TOKENS=1,2 DELIMS==" %%A IN (test.ini) DO (
FOR %%I IN (CSVFILENAME BEFOREDATETIME NOWDATETIME) DO IF /I "%%A"=="%%I" SET %%I=%%B
)
ECHO %CSVFILENAME%
ECHO %BEFOREDATETIME%
ECHO %NOWDATETIME%

■test.ini
CSVFILENAME=C:\work\user.csv
BEFOREDATETIME=2015/02/22 1:00:00
NOWDATETIME=2015/02/23 15:00:00

■結果
C:\work\user.csv
2015/02/22 1:00:00
2015/02/23 15:00:00
posted by rururu at 23:21| Comment(1) | TrackBack(0) | Dos

2015年02月22日

CSVファイルを読み込んで条件にマッチした物を別の形式で出力


■data.csv
1,a001,muri,muri@hogohoge.com
2,a002,dame,dame@hogohoge.com
3,a003,nemui,
4,a004,tukareta,tukareta@hogohoge.com

■test.bat
@echo off
rem バッチファイルでCSVデータの先頭列が任意の値にマッチする行を検索し、
rem その行の各カラムのデータを取り出す。

rem 読み込むファイル名
set READFILE=data.csv

rem 出力するファイル名
set OUTFILE=test.csv

rem ファイルを削除
del %OUTFILE%

rem 1行目がヘッダ行で無視するならskip=1を指定
rem 例) for /F "skip=1 tokens=1-4 delims=," %%a in (%READFILE%) do (
rem データが4列あるならtokens=1-4と指定
rem delimsはデータの区切り文字を指定
rem inの後ろの「()」内のファイル名が読み込むファイル名を指定
echo id,name,mail > test.csv
for /F "tokens=1-4 delims=," %%a in (%READFILE%) do (
rem メールアドレスの値がある物だけをファイルに出力
if not ""=="%%d" echo %%b,%%c,%%d >> %OUTFILE%
)

■test.csv(出力結果)
id,name,mail
a001,muri,muri@hogohoge.com
a002,dame,dame@hogohoge.com
a004,tukareta,tukareta@hogohoge.com

■参考URL
[Windows] CSVファイルの読み込み(Windows DOS)
http://www.server-design.net/?p=320
BATファイル CSVの読み込み
http://kumasoft.blogspot.jp/2013/04/bat-csv.html
バッチファイルでCSVからデータ取得
http://www.ixam.net/windows-tips/batch-file/batchifairudecsvkaradeta-qu-de
バッチファイルでのif文分岐
http://oshiete.goo.ne.jp/qa/3424504.html
for
http://pf-j.sakura.ne.jp/program/dos/doscmd/for.htm
posted by rururu at 14:38| Comment(0) | TrackBack(0) | Dos