- PR -

ファイル内の重複エントリを無くすバッチの作り方について

投稿者投稿内容
ナゾゲウム
会議室デビュー日: 2008/05/28
投稿数: 13
投稿日時: 2008-12-04 10:40
ご存知でしたらご教授頂けますでしょうか。
work.txtというファイルに下記情報が記載されています。

AAAAA
BBBBB
BBBBB
CCCCC
DDDDD
DDDDD
DDDDD
EEEEE
EEEEE
EEEEE
EEEEE
EEEEE
EEEEE
FFFFF
GGGGG
HHHHHH

これを、重複分をなくして、

AAAAA
BBBBB
CCCCC
DDDDD
EEEEE
FFFFF
GGGGG
HHHHHH

といったファイルを作成するバッチスクリプト(,bat)を作成したいのですが、
for文を使って何とかなるかと思っても考えがまとまらず挫折しております。

もしこのバッチの作り方をご存知の方がいらっしゃいましたら
ぜひともご教授頂けないでしょうか。
お手数をおかけ致しますが宜しくお願い致します。
platini
大ベテラン
会議室デビュー日: 2002/12/03
投稿数: 193
投稿日時: 2008-12-04 12:43
どうしてもbatだけでやる必要があるのでしょうか?

VBScript(WSH)は使えないのでしょうか?

batの一般のコマンドラインでもいいコマンドがあるかもしれませんが、
私なら(自分のマシンに入っているので)Log Parserを使ってGROUP BYで処理。
ナゾゲウム
会議室デビュー日: 2008/05/28
投稿数: 13
投稿日時: 2008-12-04 12:59
platiniさん

ご回答ありがとうございます。
そうなんです。確かにvbsのほうが汎用性も拡張性も何から何までbatよりも優れているという認識はあるのですが、
・私がvbsど素人で、(batのほうが理解していて作成できる)
・かつ時間的余裕がない
という理由で、bat作成を希望している次第です。

ナゾゲウム
会議室デビュー日: 2008/05/28
投稿数: 13
投稿日時: 2008-12-04 13:36
あ、なのでこちらは大変あつかましいお願いになるのですがもし可能でしたらvbs全内容をご教授頂けますと幸いです。
バッチだと切り口やヒントからでも何とかなると思うのですが、vbsの場合は全文頂きたい次第です。

お手数お掛けしますが宜しくお願いします。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-12-04 13:49
入力ファイルから1行ずつ読む(これは for /f でできると思う)
ループの中で、
・読んだ行の内容が、前の行の内容と異なっていれば、出力ファイルに書き出す(同じだったら何もしない)
・前の行の内容を、変数に保持しておく
※1行目は必ず出力する

っていう風に書けばできるんじゃないかな。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2008-12-04 14:17
引用:

バッチだと切り口やヒントからでも何とかなると思うのですが、vbsの場合は全文頂きたい次第です。



1 つのテキスト ファイル内に重複する名前が存在しないようにする方法はありますか
http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/apr05/hey0413.mspx
ナゾゲウム
会議室デビュー日: 2008/05/28
投稿数: 13
投稿日時: 2008-12-04 14:43
rainさん

いつぞやは大変お世話になりました。
今回もご回答ありがとうございます。

入力ファイルから1行ずつ読む(これは for /f でできると思う)
ループの中で、
・読んだ行の内容が、前の行の内容と異なっていれば、出力ファイルに書き出す(同じだったら何もしない)
・前の行の内容を、変数に保持しておく
※1行目は必ず出力する

上記は以前教えていただいたfor /fで私も考えてみたのですが、for文の中で前の行を保持するタイミングが?でして、頓挫していました。VBAとかであれば単純に+1して比較すればできるのですが、バッチだとやはり無理がありますかね。。

Blueさん
分かりやすいvbsのご提示、ありがとうございました。
今回は「前の行と後の行が同じの場合のみ」という条件があります為、そのまま使用することはできませんが、どうしてもバッチでNGの場合は参考にさせて頂きます。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2008-12-04 14:59
もうバッチなんていじってないから「こんな考え方でどうだい?」というのをちょっと提示。
(というか、大昔にバッチを256倍使う方法(だったかな?)という本があったのを思い出したもんで。)

・一時ディレクトリを作る
・エラー無視しながら、内容の名前のファイル(AAAAA)を作っていく
・一時ファイルのdirを取る(今見た感じだと、dir /Bかな?)
ってなのはどうでしょ?

# ちょっと思いつきで書いただけなので、文句などがあってもカンベンしてください(笑

スキルアップ/キャリアアップ(JOB@IT)