アプリ版:「スタンプのみでお礼する」機能のリリースについて

batファイルを作成していて、
txtから特定の行のみをとりだし、変数に入れたいです。
どうもよくわからないので質問したいと思います。
まず以下の様なテキストファイルがあります。
-------------------
111
222
333
-------------------
実際の値、行数は違いますが、こんな感じに文字列が複数行並んでいます。

行いたい動作は、
-----------------------------------------
1.テキストファイルの1行目を変数Textに入れる(set Text=111)
2.変数Textを使用し色々処理をする
3.テキストファイルの2行目を変数Textに入れる(set Text=222)
4.変数Textを使用し色々処理をする
-----------------------------------------
コレを繰り返します。
2と4は同じ動作ですので、行数のカウンタを設定しループさせる予定です。
n行目を全て取り出す方法がわかれば行けると思うのですが、
どうも見つかりません。ご存知の方がいればお教え願いたいと思います。

A 回答 (4件)

No3ですが、たぶん提示したスクリプトを見ると、ある事に気がつくはず?



findstr /n /r "." a.txt | findstr /r "^3:"

で3行目を表示してくれます。え!? それだけ。そうなんです

ただ、あと、先頭の”3:” をどうやって切り離すか? と言う問題にぶつかる。さらにファイルに先頭に”3:”があった場合、どうするのか? さらに、findstr の正規表現の動作が??? 表示すれるのはいいが、変数にどうやってセットするのか?

となる。結局 for 文を使いまわす事になります。

まあ、適当に改変して、上記の問題を解決してください。
    • good
    • 9
この回答へのお礼

うーんファイルの先頭に3が来る可能性はありますね。コマンドプロンプトに慣れてなく、あまり複雑だとわからないのです・・・別の方法も考えてみます

お礼日時:2013/10/14 20:47

No1, 2 さんが指摘しているようにちょっと趣旨がわからない。



>for /?

で見れば、わかるような話。とは言え、ランダムに行を表示したときは more コマンドで行数を指定すればいい。抜き出したいときは、適当なコマンドが標準では見つからない。で、

--- a.bat --------------------------------
@echo off
setlocal

set > a.txt

rem 3行目を line 変数にセット。

call :PicUp1 "3" "a.txt"
echo line=%line%

call :PicUp2 "3" "a.txt"
echo line=%line%

goto :EOF

:PicUp1
set /a No="%~1-1"
for /f "usebackq skip=%No% tokens=* delims=" %%a in (`findstr /n /r "." %2`) do (
set line="%%a"
exit /b 0
)
goto :EOF

:PicUp2
set /a No="%~1-1"
for /f "usebackq skip=%No% tokens=1,* delims=:" %%a in (`findstr /n /r "." %2`) do (
set line="%%b"
exit /b 0
)
goto :EOF

endlocal
------------------------------

などと擬似ユーザー定義関数を作るしかない。これで行数指定でピックアップできる。
    • good
    • 2
この回答へのお礼

なんとかいていただけましたか。バッチ作ってみましたが、上手くゆきません。うーんしかし自分には理解が難しい感じです。

お礼日時:2013/10/14 20:35

本文を見る限りだと「任意の行」じゃなく「各行」に思えるんですが。


もしそうなら単にFORでできますがどうでしょうか。
https://www.google.com/search?q=%E3%83%90%E3%83% …
    • good
    • 0
この回答へのお礼

うーん任意だと思います。どこかを"1"とすれば1行目のみの読み込み、"3"とすれば3行目のみの読み込みがしたいです。実際はその数字の部分を変数に置き換え、処理が終わる事に+1加算していくつもりです。検索トップの下記リンクは行いましたが、これは単純に読み込むテキストファイルの各行全て表示されてしまいます。
http://ameblo.jp/mixtest/entry-10575297208.html

お礼日時:2013/10/14 19:11
    • good
    • 0
この回答へのお礼

そちらのサイトの方法も行ったのですが、どうもできないです…1行目のみの取得はできたと思いますが、2行目以降の取得はどうすればいいのかわからないです。

お礼日時:2013/10/14 19:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A