
今回、皆様の助けを頂き、DOSバッチを作成して仕事をやることができました。
感謝します。しかしながら、入出力に関して、もう少し理解したいと思います。
特に、外のファイルの指定行の内容を読み出すことはできないでしょうか?
外のファイルの最初の行を読み出す
@echo off
set /p abc=< c:\mylog.log
echo %abc%
外のファイルの最後の行を読み出す
@echo off
FOR /F "delims= " %%a IN (c:\mylog.log) DO (set abc=%%a)
echo %abc%
-----------
DOSのHelpを調べてみましたが、
For のパラメータについて、よく理解できていません。
パラメータをうまく使えば、ファイルの指定行を読み出せる気がするのですが、
調べ切れていません。
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは。
前回も回答したM_Satoです。前回と同じような内容になりますが……
内部コマンドだけで処理せず、外部コマンドとしてsed.exeを導入すれば、テキスト・ファイルの処理に自由度が出てきます。
●使用例
1)1行目を読み出す場合
c:\sed -ne "1p" c:\mylog.log > oneline.txt
2)5行目を読み出す場合
c:\sed -ne "5p" c:\mylog.log > oneline.txt
3)最後の行を読み出す場合
c:\sed -ne "$p" c:\mylog.log > oneline.txt
●sed のオプションの説明
-n ……標準出力を抑制する(sedは入力ファイルを1行ずつ読んで(編集後に)標準出力に吐き出します。このオプションをつけると、出力コマンドがある場合に限り出力します)
-e ……うしろに記述されているコマンドを実行する。
-f ……うしろに記述されているファイルの内容をスクリプトとして実行する。
●コマンドの説明
1p……1行目を出力する
5p……5行目を出力
$p……最後の行を出力する
行数はバッチファイルの引数%1で与えてもかまいません。
●出力方法
いずれもoneline.txtに1行だけ出力しますから、あとは
type oneline.txt
として画面に出力してもいいし、
下記のようにいったん変数に取り込んでから出力してもいいでしょう。
set /p abc=<oneline.txt
echo %abc%
●導入
sed.exeはストリームエディタというDOSのソフトで、下記からダウンロードして解凍したあと、sed.exeだけをc:\に置いてください。特にインストール作業は必要ありません。
http://www.vector.co.jp/soft/dos/util/se000880.h …
(sed.exeはさまざまな開発者によって発表されており、いろいろな版がありますが、上記のものが使いやすいと思います)
なお、入力ファイル名は旧DOSの規則に従って半角換算で8文字以内+拡張子3文字以内にしてください。
この回答への補足
sed.exeの詳細な説明、ありがとうございます。
外部コマンドとして、こういうものがあることを、初めて知りました。感謝します。
しかしながら、DOSコマンドのFORは、まだ、使えると言う気がします。
小生が、理解できていないだけのことのように感じています。
目的を達成することよりは、むしろ、FORを使いこなせるようになりたい、と言うのが正直なところです。
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- PHP phpでcookieがうまく保存されない 2 2023/08/02 16:40
- Windows 10 Windowsのバッチファイルで正規表現の置換方法について… 4 2022/12/09 16:00
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- UNIX・Linux Ubuntu でinvalid filenameとなるファイルをコピーする方法 3 2023/06/08 22:26
- その他(Microsoft Office) OneDrive Personalについて 1 2022/08/02 18:25
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
OSXで常に最後に表示される文字...
-
Fedora Core 2 のコマンド
-
大量のtxtファイルを一つのtex...
-
find で探したファイルを探した...
-
【DOSコマンド】for文の中で変...
-
バッチで特定文字が含まれる先...
-
UNIXで、ディレクトリを比較し...
-
^M削除方法、教えてください。
-
【Linux】findコマンドの表示順
-
Perl:あるファイル名が指定の...
-
viで、2つのファイルを一つの...
-
シェルスクリプトでエラーが出ます
-
ubuntuで、テキストの文字を別...
-
Dirコマンドでフォルダ内ファイ...
-
grepでの日本語検索
-
SONYの音楽ソフト「x-アプリ」...
-
Linux環境 grepで改行コード(CR...
-
至急です、Ubuntuに詳しい方助...
-
pingは正常なのにtracerouteで...
-
エクセルの表にヘンな枠が・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェルスクリプトでエラーが出ます
-
【DOSコマンド】for文の中で変...
-
スラッシュ"/"を削除したい
-
renameコマンドでファイル名か...
-
UNIXで、ディレクトリを比較し...
-
バッチで特定文字が含まれる先...
-
【Linux】findコマンドの表示順
-
Linuxで*をつかってファイル移...
-
*.txtファイルの最終行だけ参照...
-
DOSでテキストファイルの中のあ...
-
OSXで常に最後に表示される文字...
-
BATファイルによるfcコマンドで...
-
○行目から□行目だけを表示する...
-
dosバッチを使用して昇順に
-
DOSバッチにて外のファイルの指...
-
unixのdiffコマンドの動作について
-
コマンドプロンプト net user...
-
ファイルの先頭に文字を追加す...
-
shellでsmbclientでファイル転送
-
行の挿入をおこなう。awk?
おすすめ情報