痔になりやすい生活習慣とは?

テキストファイルに改行コードを付加してレコードを分割したい。

MSDOSテキストファイルで、1レコードのサイズが128バイトのテキストファイルが
あるのですが、レコード間に改行コードがありません。
レコード10件なら1280バイト 20件なら2560バイトのファイルです。
これを128バイトごとに改行コードを付加できるようなソフトはないでしょうか?

ファイル分割ではなく、レコードの分割ができる物を探しています。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

試しにプログラムを作って見ました。


当方で簡単な動作テストは致しましたが、ご使用になるようでしたら念のためテストをお願いします。

↓ここに置いてあります。※数日間は置いておきます
http://briefcase.yahoo.co.jp/naunau_mamy

簡単な説明書も付けてあります

使い方:
  (1) 引数無しに実行するとコマンドの形式と注意を画面に表示します。

     E:\test>div
     形式: div filename record-size
        filename ・・・ 入力ファイル名
        record-size ・・・ 出力時のレコード長(改行を含まないサイズ)

     注意:ファイルに出力する場合はリダイレクトして下さい
        div filename record-size > outfilename という形式です


  (2) 引数として入力ファイル名、出力時のレコードサイズを指定します。
    出力はファイルにリダイレクトして下さい。

    下記は 入力ファイルtest1.datを読み込み、出力レコードサイズ128バイト
    ごとに改行コードを付加して、ファイルtestout1.datに出力する例です。

    ※実行終了時に出力レコードサイズ、出力した件数を画面に表示します。

     E:\test>div test1.dat 128 > testout1.dat
     出力レコード長:128
     出力した件数 :1017


  (3) 入力ファイルのサイズ > (出力レコードサイズ × 出力件数) であった場合
    最終レコードは指定された出力レコードサイズよりも小さくなります。
    この場合の実行例は下記の様になります。

     E:\VCPP\test>div test2.dat 128 > testout2.dat
     出力レコード長:128
     出力した件数 :1018

     注意:最終レコードの長さ:24

参考URL:http://briefcase.yahoo.co.jp/naunau_mamy
    • good
    • 1
この回答へのお礼

プログラムまで作成していただいたんですね。
すごいですね。ありがとうございます。
早速試してみました。なかなかいい感じです。

業務で使用したいので、来週本格的に確認させていただきます。
ありがとうございました。

お礼日時:2010/05/29 12:02

ANo.2の改行さんを使って試して見ると約128KBのファイルを128バイト単位にレコード分割はできました。


但し、バッチでは実行できないですね。

※コマンドプロンプトで実行できるプログラムの作成は経験者には難しくはありませんが、経験が無いと難しいですね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
また、動作確認までしていただき感謝です。

求めている結果は得られそうですね。
バッチ内でこのソフトの実行ファイルに必要な情報をパラメータ
として付加することで動作できたらいいんですが・・・

お礼日時:2010/05/28 23:53

下記の様なソフトがあります。


ただし、確認はしておりませんので、動作を御確認願います。


■改行さん
テキストファイルを指定した文字数で改行する ファイル読み込みは8バイトしかメモリ利用してない軽量アプリ
http://www.vector.co.jp/soft/dl/win95/util/se420 …

参考URL:http://www.vector.co.jp/soft/dl/win95/util/se420 …
    • good
    • 0

20件程度の小さなファイルであればマクロ機能の使えるテキストエディタでマクロによって行うことが考えられると思います。



例:秀丸エディタ、WZエディタなど
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

説明が不足していました。申し訳ありません。
件数は通常で100件超、多い時は1000件を越える可能性があります。

また、DOSバッチ内で該当ファイルが作成された直後に連続して動作させたいと考えています。

回答頂いた秀丸エディタ、WZエディタなどの詳細説明を確認したいと思います。

お礼日時:2010/05/28 20:42

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qバッチファイルで改行の出力

バッチファイルで,改行のみをファイルに追記したいのですがどのようにすればできますか?
echo >> output.txt
とすると「ECHO は <OFF> です。」と出力されてしまいます.
全角を出力すれば見た目は同じですが,純粋に改行のみの出力方法をお願いします.

Aベストアンサー

下記のうちどれでも出来ます。

echo.>> output.txt
echo,>> output.txt
echo:>> output.txt
echo;>> output.txt

Qコマンドにてテキストファイルに文字列の追加

指定フォルダ内にある全てのテキストファイル(*.txt)の文末に
改行コードをいれたいです。

Windows標準のコマンドプロンプトまたはbatファイルでの実行が条件です。
テキストファイルの数および名称は不特定で、拡張子は「.txt」で固定です。

環境は2Kproですが、XP環境の事例でもOKです。
ご教授宜しくお願いします。

Aベストアンサー

#1です。少し間違っていました。

dir /b *.txt >filelist
for /f "delims=" %%i in (filelist) do copy "%%i"+CR "%%i"
del filelist

こんな感じですかね。
ロングファイルネームで空白などが使われている場合は、ダブルクォーテーションで囲む必要がありました。
(あと名前を変えたりしなくても良かったみたいです)

Qバッチで指定ファイルの文末に改行コードをつけたい

指定フォルダ内にある全てのテキストファイルの文末に改行コードをつけたいと思っています。
しかし指定フォルダの中にあるサブフォルダやファイル名は不変ではありません。
量も大変な数があるためバッチファイルを作ろうとしています。(*.bat)

あるフォルダを指定すればそのフォルダに含まれるサブフォルダも対象とし
全てのテキストファイルの文末に改行コードをつけたいのですが
バッチファイルにはどのように記述すればよいのでしょうか?
理想ではそのバッチファイルが実行されているフォルダをカレントディレクトリとして取得し
そのカレントディレクトリ内のテキストフォルダ(ここでのフォルダ名は固定の予定)を指定フォルダとしたいです。

以前ほんの少しだけプログラムを触った事がある程度でコマンドプロンプトは殆ど触った事がありません。
下記のようなページを参考にしていますがうまくいきませんでした。
どなたか御教授して頂けないでしょうか。

http://oshiete.goo.ne.jp/qa/6496815.html
http://oshiete.goo.ne.jp/qa/4632586.html
http://oshiete.sponichi.co.jp/qa5051199.html

指定フォルダ内にある全てのテキストファイルの文末に改行コードをつけたいと思っています。
しかし指定フォルダの中にあるサブフォルダやファイル名は不変ではありません。
量も大変な数があるためバッチファイルを作ろうとしています。(*.bat)

あるフォルダを指定すればそのフォルダに含まれるサブフォルダも対象とし
全てのテキストファイルの文末に改行コードをつけたいのですが
バッチファイルにはどのように記述すればよいのでしょうか?
理想ではそのバッチファイルが実行されているフォルダをカレントデ...続きを読む

Aベストアンサー

No2です。

ファイル末に改行コードをつけると言うことですね。
前回書いたステップ1だと、

more file.txt > file.out

で、末尾が必ず改行になります。あとは、

move file.out file.txt

で、もとのファイルに戻す。

ステップ2は、for /r を使います。/r はその下のフォルダのファイル全部と言うこと。

for /r %%F in (*.txt) do (
 more %%F > workfile.tmp
 move workfile.tmp %%F
)

QCOPYコマンドで結合すると余計な改行コードができる

batファイル内でCOPYコマンドで2つのファイルを結合するコードを書いています。
しかし、中身が空の0KBのデータ同士を結合すると、改行データが1つ含まれる1KBのデータが作成されてしまいます。
この改行データの作成を防ぐにはどのようなコマンドを書けばよろしいでしょうか。どなたかご存知の方がいれば宜しくお願い致します。

【2つのファイルを用意】
test01.txt 0KB
test02.txt 0KB

【結合】
COPY test*.txt test.txt

【改行コードを含むテキストが作成される】
text.txt 1KB

Aベストアンサー

copy /B *.txt test.txt
としてください。
copy /? でcopy コマンドのヘルプが表示されますので詳細はそちらを参照ください。

QDOSのバッチで、テキストファイル中の文字を置換したい

いつもお世話になっております。

WindwsXPでDOSバッチを使ってテキストファイル中にある文字列1を文字列2に置換したいのです。
ネットをさまよっていて、こんな例を見つけました。
(参考にしたのはここです。http://www.fpcu.jp/dosvcmd/bbs/log/cat3/cat54/2-0391.html)

======================
@echo off
if "%1"=="" goto end
set fname=%1
copy %fname% org >nul
type nul >%fname%
for /f "tokens=1* delims=" %%a in ( org ) do (set line=%%a&& call :sub)

del org
goto end

:sub
:この1行下の acb=xyz に置換前と置換後の文字列を指定する。
set l=%line:abc=xyz%
echo %l%>>%fname%
goto :EOF

:end
======================

これをsample.batという名前で保存し、DOSのウィンドウでsample < a.txt と打つと、a.txtファイル中の"abc"が"xyz"に置き換わります。

これに手を入れて置換前と置換後の文字列を可変にしたく思い、sub中に

set mae=abc
set ato=xyz

の2行を加え、変数に値を設定するようにしました。

ところが、次の1行の書き変え方がわかりません。

set l=%line:abc=xyz%



set l=%line:%abc%=%xyz%%

のように変えてみましたが、うまく動きません。

どなたかご教授いただけませんか。DOSだけでファイル中の文字列の置換ができればset文を使う使わないにはこだわりません。

いつもお世話になっております。

WindwsXPでDOSバッチを使ってテキストファイル中にある文字列1を文字列2に置換したいのです。
ネットをさまよっていて、こんな例を見つけました。
(参考にしたのはここです。http://www.fpcu.jp/dosvcmd/bbs/log/cat3/cat54/2-0391.html)

======================
@echo off
if "%1"=="" goto end
set fname=%1
copy %fname% org >nul
type nul >%fname%
for /f "tokens=1* delims=" %%a in ( org ) do (set line=%%a&& call :sub)

del org
goto end

:sub
...続きを読む

Aベストアンサー

No.5 です。

>勝手に引用してしまってすみません。
皆さんに参考にしてもらうために回答しているので気になさらずに引用してください。

さてご質問の件ですが、

◆予備知識
まず、環境変数を%で囲むと、バッチがその行を実行するときに環境変数の中身に置き換えられることを理解してください。
例)
set mae=abc
set ato=xyz

echo %mae% %ato% ←※

※の行が実行されるとき、実際は
echo abc xyz
と置き換えられてecho文が実行されます。

また、バッチ内では %% と%が2つ並んだ記述は1つの%に置き換えられます。

例)echo 10割は100%%
10割は100%


◆今回の場合

call set l=%%line:%mae%=%ato%%%
↓実行されるときに以下のように置き換えられます。
call set l=%line:abc=xyz%

置き換え後に call 文が実行されます。このcall文の記述だと set l=%line:abc=xyz% という1行のバッチを呼び出しているのと同等の動作になります。従って環境変数lineに入っている文字列のabcがxyzに置き換えられた結果が環境変数lに代入されます。
call文でワンクッション置いて、先に環境変数の mae と ato (と%%)だけ評価(環境変数の中身に置き換え)するようにしています。

◆単純に set l=%line:%mae%=%ato%% とした場合なぜうまくいかないか

set文の右辺の各要素を分けて書くと

%line:%(line: という環境変数の中身)→そんな変数は定義していないので空に置き換え

mae

%=%(= という環境変数の中身)→そんな変数は定義できないので空に置き換え

ato

%% → % に置き換え

と解釈されて
環境変数lには maeato% という文字列が代入されてしまいます。


余談ですがバッチ実行時にどのように置き換えられるか見たい場合は、
バッチ先頭のecho offの行を取って実行するとよく分かります。

No.5 です。

>勝手に引用してしまってすみません。
皆さんに参考にしてもらうために回答しているので気になさらずに引用してください。

さてご質問の件ですが、

◆予備知識
まず、環境変数を%で囲むと、バッチがその行を実行するときに環境変数の中身に置き換えられることを理解してください。
例)
set mae=abc
set ato=xyz

echo %mae% %ato% ←※

※の行が実行されるとき、実際は
echo abc xyz
と置き換えられてecho文が実行されます。

また、バッチ内では %% と%が2つ並んだ記述は1つ...続きを読む

Qバッチ処理でファイルの中身を変数に入れるやり方

あるファイルの中には1行の文字列があります。
このファイルをバッチで読み取り、変数に設定したいです。

例:
test.txt
abcacbacbacbacbacbacbacbacb

test,bat
set DATA=[test.txtを読み込んだ値]

よろしくお願い致します。

Aベストアンサー

これですね。

参考URL:http://www.upken.jp/kb/dqvgHNRUxwFDkmtoqEwfXHUjDrevNv.html

Qバッチでテキストファイルから任意の行のみ取得したい

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

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

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

行いたい動作は、
-----------------------------------------
1.テキストファイルの1行目を変数Textに入れる(set Text=111)
2.変数Textを使用し色々処理をする
3.テキストファイルの2行目を変数T...続きを読む

Aベストアンサー

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

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

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

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

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

まあ、適当に改変して、上記の問題を解決してください。

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

QEXCELの文字列操作で文字数不足の分をスペースで補う方法

EXCELの文字データを取り出す際に以下のような操作を行いたいんですが、方法をご存知の方がいらっしゃいましたら教えていただけませんでしょうか。

既にデータの入力されているセルの文字数が、ある一定数に満たない場合は不足分を半角スペースで補う

【例】文字数を15と指定したとします
セルに入力されたデータ:山田_ 太郎
   ↓
求めたいデータ:山田_ 太郎_ _ _ _ _ _
(山田の後に半角スペースが1、太郎の後に半角スペースが6つ入っていると仮定してください)

※TEXT関数で数値の文字数不足分を0で埋めるということはできたのですが、TEXT関数は数値のみを対象としているようで・・・。
【例】12345 → 000000000012345

よろしくお願いいたします。

Aベストアンサー

A1に「山田 太郎」が入っている場合、
 =LEFTB(A1&REPT(" ",15),15)
と式を立てればOKです。

LEFBは、左側から指定バイト分(半角1バイト・全角2バイト)を抜き出す関数。
REPTは、所定の文字をくり返す関数です。

Q【エクセル】改行無しテキストファイルの読み込み方法

改行無しの連続的なデータ(データ間はカンマで区切られています)をエクセルに読み込ませたいのですが、256個までしかデータを読み込みません。256個目のデータの後に『改行コード』が無いと、それ以上の読み込みは不可能でしょうか?よろしくお願い致します。

Aベストアンサー

1. 単純に改行コードが CRLF ではないケース

  Windows の既定の改行コードは CRLF ですが、データを出力
  したシステムが Unix 系だと LF、マックだと CR になります。
  
  メモ帳で上記のような改行コードが既定と異なるファイルを
  開いた場合、一見して改行がないように見えるかもしれません。
  
  ただし、改行コードに当たる部分が■のように文字化けした
  よう表示されますから、データ全体を眺めてみると手がかりに
  なるかもしれません。

  この場合、Terapad などのエディタで改行コードを CRLF に
  指定して保存し直すなどの方法がとれそうです。


2. 複数列のデータ構造ではないケース

  単に1系列のデータ(Excel で言えば 1列)のデータが延々と
  カンマで区切られているだけなのでは?

   # 改行コードをつけないデータ出力は普通にあります
   # 3. とも関連しますが、レコードの区切りは改行コード
   # と限られているわけではありません。

  この場合もよほどイレギュラーなケースでなければ、Terapad
  などのエディタでカンマを改行コードに置換してしまえば
  済む気がします。


3. レコード区切りが NULL など

  レコード区切りに NULL を使っている場合があります。この
  場合は、Terapad などでファイルを開いてみると NULL を
  含んでいると警告がでます。
  
  対応策としては VBA で読み込むとか。

1. 単純に改行コードが CRLF ではないケース

  Windows の既定の改行コードは CRLF ですが、データを出力
  したシステムが Unix 系だと LF、マックだと CR になります。
  
  メモ帳で上記のような改行コードが既定と異なるファイルを
  開いた場合、一見して改行がないように見えるかもしれません。
  
  ただし、改行コードに当たる部分が■のように文字化けした
  よう表示されますから、データ全体を眺めてみると手がかりに
  なるかもしれません。

  この場合、Terapad ...続きを読む


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

人気Q&Aランキング