コマンドプロンプトで数値抽出

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
commandbeginner

コマンドプロンプトで数値抽出

#1

投稿記事 by commandbeginner » 12年前

C言語でファイルを読み込み、1行ごとの数字だけを読み込み総和を求めるというプログラムは
作れたのですが、コマンドプロンプトでこれをやろうとしたら上手くいきません。

number.txtが

t_q23ta
x?y34ab
x+xXX45wer


という3行のテキストで
数字になってる23,34,45を足して表示するというプログラムです。
1行ごとに、数字が1つだけ隠れていて、これを抽出して総和を求めたいです。
何故数字以外の文字列を入れたかというと、文字列から数字を抽出するという
応用的な事がしたいからです。Cでは配列を用意して数字が出てきたら、文字列の
長さと順番にでてきた数字からint型の変数に変換するというやり方で行いました。
コマンドプロンプトやシェルではどうやってこのコマンドプログラムを汲めばいいのでしょうか?

commandbeginner

コマンドプロンプトで数値抽出

#2

投稿記事 by commandbeginner » 12年前

ユーザー名と件名が逆になりました、すいません。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: commandbeginner

#3

投稿記事 by みけCAT » 12年前

ファイルを開く代わりにそのファイルポインタにstdinを代入するだけではないのですか?

書いたプログラムのソースコードを提示することはできますか?
コマンドプロンプトで行った操作も教えていただけるとわかりやすいです。
コードを提示するときは、BBcodeを有効にした状態でcodeタグで囲み、
かつきちんとインデントをしていただけると、見やすくて助かります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: コマンドプロンプトで数値抽出

#4

投稿記事 by softya(ソフト屋) » 12年前

直しておきましたが、丸投げは禁止させて頂いております。
みけCATさんの言われる通り、今出来ているソースコードをお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: コマンドプロンプトで数値抽出

#5

投稿記事 by みけCAT » 12年前

もしかして、外部のプログラムに頼らず、コマンドプロンプトの内部コマンドだけでこの処理を行いたいということでしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

commandbeginner

Re: コマンドプロンプトで数値抽出

#6

投稿記事 by commandbeginner » 12年前

>みけCATさん
はい、コマンドプロンプトのコマンドだけで実現したいです。
Cでは作りましたから。
無理でしょうか?

box
記事: 2002
登録日時: 15年前

Re: コマンドプロンプトで数値抽出

#7

投稿記事 by box » 12年前

そもそも
commandbeginner さんが書きました:コマンドプロンプトでこれをやろうとしたら上手くいきません。
どんなコマンドを入力して、どのようにうまくいかなかったのでしょうか。
具体的に示してください。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: コマンドプロンプトで数値抽出

#8

投稿記事 by みけCAT » 12年前

commandbeginner さんが書きました:>みけCATさん
はい、コマンドプロンプトのコマンドだけで実現したいです。
Cでは作りましたから。
無理でしょうか?
外部コマンドが一部含まれるかもしれませんが、
「バッチファイルを使用し、コマンドプロンプトでhelpコマンドを実行したときに表示されるコマンドだけでこの処理を行う」
ことを目標にしていいですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

commandbeginner

Re: コマンドプロンプトで数値抽出

#9

投稿記事 by commandbeginner » 12年前

>boxさん
すいません、使えそうなコマンドがなくて
全く組めてません、良いコマンドがあれば教えて頂きたいです。
コマンドの流れ的には、行が終わるまで変数sum(初期値0)に数値を加算
というような感じですね。

commandbeginner

Re: コマンドプロンプトで数値抽出

#10

投稿記事 by commandbeginner » 12年前

そうですね、helpで表示されるコマンドだけで何とかしたいです。
コンピュータに何か変更をするのは避けたいので。

box
記事: 2002
登録日時: 15年前

Re: コマンドプロンプトで数値抽出

#11

投稿記事 by box » 12年前

commandbeginner さんが書きました:C言語でファイルを読み込み、1行ごとの数字だけを読み込み総和を求めるというプログラムは
作れた
まあ、手元にあるはずのソースコードの提示がない限りは、
話は先に進みそうもないですね。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: コマンドプロンプトで数値抽出

#12

投稿記事 by softya(ソフト屋) » 12年前

Linuxのシェルならexprなどがあるので計算できますが、それではなくて?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: コマンドプロンプトで数値抽出

#13

投稿記事 by softya(ソフト屋) » 12年前

あとWindowsならvbscriptやら、jscript、それと7以降標準のWindows PowerShellってもあります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: コマンドプロンプトで数値抽出

#14

投稿記事 by みけCAT » 12年前

とりあえず、!=~以外の半角文字の中に入っている数値を抽出して足すことができました。
どうしたらこの3文字に対応できるか、もう少し効率のいい方法は無いかを調査しています。

コード:

@echo off
setlocal ENABLEDELAYEDEXPANSION

set sum=0

for /F "delims=" %%i in (number.txt) do (
	set num=%%i
	set num=!num: =!
rem	set num=!num:!=!
	set num=!num:"=!
	set num=!num:#=!
	set num=!num:$=!
	set num=!num:%%=!
	set num=!num:^&=!
	set num=!num:'=!
	set num=!num:(=!
	set num=!num:^)=!
	set num=!num:**=!
	set num=!num:+=!
	set num=!num:,=!
	set num=!num:-=!
	set num=!num:.=!
	set num=!num:/=!
	set num=!num::=!
	set num=!num:;=!
	set num=!num:^<=!
rem	set num=!num:==!
	set num=!num:^>=!
	set num=!num:?=!
	set num=!num:@=!
	set num=!num:A=!
	set num=!num:B=!
	set num=!num:C=!
	set num=!num:D=!
	set num=!num:E=!
	set num=!num:F=!
	set num=!num:G=!
	set num=!num:H=!
	set num=!num:I=!
	set num=!num:J=!
	set num=!num:K=!
	set num=!num:L=!
	set num=!num:M=!
	set num=!num:N=!
	set num=!num:O=!
	set num=!num:P=!
	set num=!num:Q=!
	set num=!num:R=!
	set num=!num:S=!
	set num=!num:T=!
	set num=!num:U=!
	set num=!num:V=!
	set num=!num:W=!
	set num=!num:X=!
	set num=!num:Y=!
	set num=!num:Z=!
	set num=!num:[=!
	set num=!num:\=!
	set num=!num:]=!
	set num=!num:^^=!
	set num=!num:_=!
	set num=!num:`=!
	set num=!num:a=!
	set num=!num:b=!
	set num=!num:c=!
	set num=!num:d=!
	set num=!num:e=!
	set num=!num:f=!
	set num=!num:g=!
	set num=!num:h=!
	set num=!num:i=!
	set num=!num:j=!
	set num=!num:k=!
	set num=!num:l=!
	set num=!num:m=!
	set num=!num:n=!
	set num=!num:o=!
	set num=!num:p=!
	set num=!num:q=!
	set num=!num:r=!
	set num=!num:s=!
	set num=!num:t=!
	set num=!num:u=!
	set num=!num:v=!
	set num=!num:w=!
	set num=!num:x=!
	set num=!num:y=!
	set num=!num:z=!
	set num=!num:{=!
	set num=!num:^|=!
	set num=!num:}=!
rem	set num=!num:~=!
	set /A sum=sum+num
)

echo !sum!
オフトピック
フォーラムルール違反ならごめんなさい。
とりあえずコマンドプロンプト単体でも不可能ではないかもしれないことを示す目的で投稿しました。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

commandbeginner

Re: コマンドプロンプトで数値抽出

#15

投稿記事 by commandbeginner » 12年前

みけCAT さんありがとうございます!!
ちょっと試してみます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: コマンドプロンプトで数値抽出

#16

投稿記事 by softya(ソフト屋) » 12年前

みけCAT さん、ご苦労さまです。
出来るような気はしてましたが、これは作るのが面倒ですね。非効率過ぎて泣けてきました。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

commandbeginner

Re: コマンドプロンプトで数値抽出

#17

投稿記事 by commandbeginner » 12年前

コマンドは意外と大変なことを知りました。コマンドプロンプトは複合的な処理や細かい処理は苦手なのかなと
思いました。ありがとうございました。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: コマンドプロンプトで数値抽出

#18

投稿記事 by みけCAT » 12年前

みけCAT さんが書きました:!=~以外の半角文字の中に入っている数値を抽出して足すことができました。
試してみたところ、forコマンドでファイルを読み込む段階でいくつかの文字が消えているようで、
その中に上記の3文字も含まれているため、ファイルに上記の3文字が含まれていても動作するようです。
(Windows Vistaで確認)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

commandbeginner

Re: コマンドプロンプトで数値抽出

#19

投稿記事 by commandbeginner » 12年前

みけさんありがとう~
本当に助かったし勉強になりました。

閉鎖

“C言語何でも質問掲示板” へ戻る