- - PR -
ファイル内の重複エントリを無くすバッチの作り方について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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文を使って何とかなるかと思っても考えがまとまらず挫折しております。 もしこのバッチの作り方をご存知の方がいらっしゃいましたら ぜひともご教授頂けないでしょうか。 お手数をおかけ致しますが宜しくお願い致します。 | ||||
|
投稿日時: 2008-12-04 12:43
どうしてもbatだけでやる必要があるのでしょうか?
VBScript(WSH)は使えないのでしょうか? batの一般のコマンドラインでもいいコマンドがあるかもしれませんが、 私なら(自分のマシンに入っているので)Log Parserを使ってGROUP BYで処理。 | ||||
|
投稿日時: 2008-12-04 12:59
platiniさん
ご回答ありがとうございます。 そうなんです。確かにvbsのほうが汎用性も拡張性も何から何までbatよりも優れているという認識はあるのですが、 ・私がvbsど素人で、(batのほうが理解していて作成できる) ・かつ時間的余裕がない という理由で、bat作成を希望している次第です。 | ||||
|
投稿日時: 2008-12-04 13:36
あ、なのでこちらは大変あつかましいお願いになるのですがもし可能でしたらvbs全内容をご教授頂けますと幸いです。
バッチだと切り口やヒントからでも何とかなると思うのですが、vbsの場合は全文頂きたい次第です。 お手数お掛けしますが宜しくお願いします。 | ||||
|
投稿日時: 2008-12-04 13:49
入力ファイルから1行ずつ読む(これは for /f でできると思う)
ループの中で、 ・読んだ行の内容が、前の行の内容と異なっていれば、出力ファイルに書き出す(同じだったら何もしない) ・前の行の内容を、変数に保持しておく ※1行目は必ず出力する っていう風に書けばできるんじゃないかな。 | ||||
|
投稿日時: 2008-12-04 14:17
1 つのテキスト ファイル内に重複する名前が存在しないようにする方法はありますか http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/apr05/hey0413.mspx | ||||
|
投稿日時: 2008-12-04 14:43
rainさん
いつぞやは大変お世話になりました。 今回もご回答ありがとうございます。 入力ファイルから1行ずつ読む(これは for /f でできると思う) ループの中で、 ・読んだ行の内容が、前の行の内容と異なっていれば、出力ファイルに書き出す(同じだったら何もしない) ・前の行の内容を、変数に保持しておく ※1行目は必ず出力する 上記は以前教えていただいたfor /fで私も考えてみたのですが、for文の中で前の行を保持するタイミングが?でして、頓挫していました。VBAとかであれば単純に+1して比較すればできるのですが、バッチだとやはり無理がありますかね。。 Blueさん 分かりやすいvbsのご提示、ありがとうございました。 今回は「前の行と後の行が同じの場合のみ」という条件があります為、そのまま使用することはできませんが、どうしてもバッチでNGの場合は参考にさせて頂きます。 | ||||
|
投稿日時: 2008-12-04 14:59
もうバッチなんていじってないから「こんな考え方でどうだい?」というのをちょっと提示。
(というか、大昔にバッチを256倍使う方法(だったかな?)という本があったのを思い出したもんで。) ・一時ディレクトリを作る ・エラー無視しながら、内容の名前のファイル(AAAAA)を作っていく ・一時ファイルのdirを取る(今見た感じだと、dir /Bかな?) ってなのはどうでしょ? # ちょっと思いつきで書いただけなので、文句などがあってもカンベンしてください(笑 |