『忠犬もちしば』のAIを育てるとグッズが貰える!>>

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

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

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

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

A 回答 (2件)

copy /B *.txt test.txt


としてください。
copy /? でcopy コマンドのヘルプが表示されますので詳細はそちらを参照ください。
    • good
    • 4
この回答へのお礼

/Bを加えることで改行なしのファイルを作成することができました。
ご回答ありがとうございました。

お礼日時:2006/10/31 12:55

バイナリモードで結合するか、TYPEコマンドで結合するかといったところでしょうか。



copy /b test*.txt test.txt
type test*.txt > test.txt
    • good
    • 3
この回答へのお礼

typeで結合する方法もあるんですね。参考にさせていただきます。
この度はありがとうございました。

お礼日時:2006/10/31 12:58

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

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

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

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

Qテキストファイルの結合+改行について

ユーザーからの注文が1行1テキストファイルで断続的にメールに添付されて配信されてきます。MS-DOSのCOPYコマンドとワイルドカードを利用して結合のバッチファイルを作成しましたが、テキストファイルの最終に改行がない為、長~いレコードになってしまい、データベース(Accessですが)にインポートできません。改行付で結合、あるいはその他の解決方法はないものでしょうか?
win98+Access2000※Accessはマクロをチョロッといじれる程度の初心者です。
よろしくお願いします。

Aベストアンサー

Sub test01()
Path = "c:\My Documents\"
Open Path & "xxx.csv" For Output As #2
a = Dir("c:\My Documents\")
p01:
b = Dir()
If b = "" Then GoTo e01
If Right(b, 3) = "csv" Then
MsgBox b
Open Path & b For Input As #1
On Error GoTo 0
Input #1, x
Print #2, x
Close #1
End If
GoTo p01
e01:
Close #2
End Sub
Path=の右辺のところを注文テキストファイルあるフォルダ名に変えてください(フルパス)。そのフォルダには注文テキスト以外置かないように。
Open Path & "xxx.csv" For Output As #2のところは
xxx.csvでテストしましたが、アウトプットファイル名.txt
に変えてください。
エクセルやアクセスVBAのモジュールにコピーし実行できるはずです。
VBの場合も標準モジュールにコピーし、Form1を解放し、Sub test01()をSub Main()にして実行して下さい。

Sub test01()
Path = "c:\My Documents\"
Open Path & "xxx.csv" For Output As #2
a = Dir("c:\My Documents\")
p01:
b = Dir()
If b = "" Then GoTo e01
If Right(b, 3) = "csv" Then
MsgBox b
Open Path & b For Input As #1
On Error GoTo 0
Input #1, x
Print #2, x
Close #1
End If
GoTo p01
e01:
Close #2
End Sub
Path=の右辺のところを注文テキストファイルあるフォルダ名に変えてください(フルパス)。そのフォルダには注文テキスト以外置かないように。
Open Path & "xxx.csv" Fo...続きを読む

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

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

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

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

Aベストアンサー

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

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

区別するなら、

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

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 文を使いまわす事になります。

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

QDOSで、ASCIIデータをバイナリコピーにて結合するとゴミがはいる?

DOSで、2つのASCIIデータをバイナリコピー(COPY /b)すると1バイトのゴミが入る場合があるのですが、なぜこのようになるのでしょうか?

しかし、必ずゴミが入るわけではないようにも思います。
→たまたま入る時がある?
→ASCIIデータの形によって、入る時がある?
バイナリコピーしない場合(COPY)は混在することは無いように思います。

昔、ASCIIデータは、バイナリコピーしない方が無難と聞いたことがある気もするのですが、昔過ぎて理由等忘れてしまいました。

詳しい方いらっしゃいましたらお教えいただけると助かります。

Aベストアンサー

手元の環境でやってみました(WindowsのDOS窓ですが)

その1バイト増えるごみ というのはもしかしたらファイルの最後に
付いておりデータとして 0x1A(16進) ではありませんか?
(此方でやった限り逆にアスキーコピーした時に付いてるようですが)

そうならファイルの終了マーカを意味している物ではないかと思います
http://support.microsoft.com/kb/29852/ja

ファイルの中間にデータが増えるとか言うのでしたら
具体的なファイルのダンプコードなどをチェックするか
ここに乗せた方がいいのではないかと思います

アスキー(テキスト)ファイルの作成方法によってはファイル終了マーカとして
最後に0x1Aが書き込まれます
例)
DOSプロンプト上で copy con ファイル名 等として直接ファイル入力
終了する時には CTRL+Z の入力となりそのような作成すると
0x1Aが書き込まれます

プログラムなどでファイル造作する場合でもアスキーモードで開けば
このデータは無視されるはずです

手元の環境でやってみました(WindowsのDOS窓ですが)

その1バイト増えるごみ というのはもしかしたらファイルの最後に
付いておりデータとして 0x1A(16進) ではありませんか?
(此方でやった限り逆にアスキーコピーした時に付いてるようですが)

そうならファイルの終了マーカを意味している物ではないかと思います
http://support.microsoft.com/kb/29852/ja

ファイルの中間にデータが増えるとか言うのでしたら
具体的なファイルのダンプコードなどをチェックするか
ここに乗せた方がいいの...続きを読む

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

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

例:
test.txt
abcacbacbacbacbacbacbacbacb

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

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

Aベストアンサー

これですね。

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

Qテキストファイル結合のバッチコマンド

DOSプロンプトで、「copy」というコマンドを使って特定のフォルダ内のテキストファイルを全て読み込んで結合するバッチファイルを作りたいのですが、わかる方教えてください。

Aベストアンサー

>フォルダ内のテキストファイルを全て読み込んで結合する
フォルダ内の全てのテキストファイルを結合するには
例えばCドライブのtestというフォルダ内のtxtファイルをcドライブのtempという
フォルダに結合してコピーしたい場合・・

copy c:\test\*.txt c:\temp\A.exe

ワイルドカードの*を使うと拡張子がtxtのファイル全てが該当します。
コピーの送り側・受け側のパスはフルパスで指定してください。

Qバッチファイル 文字列にスペースがある場合

for /f %%A in ('dir /b /s c:\a aa*.pdf') do copy "%%A" D:\

これはcドライブのa aaというフォルダ名の中を検索するコードですが、
フォルダ名にスペースがあるため、うまく動きません。

"a aa"のように""で囲ってみましたが、駄目でした。

どうすれば良いのか、教えていただきたいので、お願いします。

Aベストアンサー

for /f %%A in ('dir /b /s c:\"a aa"\*.pdf') do echo copy "%%A" D:\
のようにecho でどのようなコマンドが実行されているか確認しましょう。

この記述ではdirコマンドで表示されるパスの中に空白があるため %%A には空白までの文字列しか代入されません。
以下のように修正して試してみてください。

for /f "delims=" %%A in ('dir /b /s c:\"a aa"\*.pdf') do copy "%%A" D:\

QCSVファイルの項目行を削除して結合するには?

お世話になります。m(__)m

2000行ほどのCSVファイルが数個あります。
このCSVデータをすべてひとつのファイルに結合したいのですが、
・それぞれのファイルの1行目にある項目データを削除したい。
・結合後の1行目には項目名を残したい。
・可能であればコピーバッチのようなもので作成したい。
と、このように思っております。

どのような手があるか教えて下さい。

Aベストアンサー

D:\temp にある file1.csv~file5.csv を fileX.csv にまとめるには、次のバッチファイルで可能です。
(OS:WindowsXP)

D:
CD \temp
COPY file1.csv fileX.csv
FOR /L %%F IN (2,1,5) DO MORE +1 file%%F.csv >> fileX.csv

1,2行目の説明は省略します。
まず、3行目で最初のファイル(file1.csv)をそのまま fileX.csvの名前でコピーします。
4行目で他のファイルの2行目以降をMOREコマンドで出力した結果をfileX.csvに追記します。

ファイル名等は、2v82さんの環境に合わせて変更してください。ファイル名に連番が付いていないなど、規則性がない場合は、4行目のFOR文の書き方を変えることで対応できる場合がありますので、調べてみてください。(コマンドプロンプトで、「FOR /?」を実行すると詳細なヘルプが表示されます)

Q複数のテキストファイルを結合するバッチファイル

複数のテキストファイルを1つにまとめたいと思います。
テキストファイルの内容は以下の通りです。

(Input_1.txt)
出身県,性別
神奈川,男
埼玉,男
千葉,女
(Input_2.txt)
出身県,性別
群馬,女
茨城,男
栃木,女
以下のようにまとめたいと思います。タイトルは先頭のみにしたい。
(Merge.txt)
出身県,性別
神奈川,男
埼玉,男
千葉,女
群馬,女
茨城,男
栃木,女

type Input*.txt > Merge.txt
とすると、2つめのタイトルが付与されてしまいます。
どのようにすれば良いか教えて下さい。

Aベストアンサー

No.4です。

え~、予め意見を言いますと、本題へのベストなアンサーなら No5さんの more を使った方がシンプルで1番いいと思いますよ。
私は more を思い付かなかったまでで...

for については /? で表示されるヘルプを見た方が間違いないですね。

Qバッチファイルで昨日の日付を取得

すみません、どなたか教えて下さい。

バッチファイルの記述で、昨日の日付を取得する方法を教えて下さい。
今日の日付は下記のように取得しています。

rem 日時変数の取得
for /f "tokens=1-3 delims=/" %%a in ('echo %date:~-10%') do (set YYYYMMDD=%%a%%b%%c
)

Aベストアンサー

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if %mm%==05 (set mm=04&& set dd=30)
if %mm%==06 (set mm=05&& set dd=31)
if %mm%==07 (set mm=06&& set dd=30)
if %mm%==08 (set mm=07&& set dd=31)
if %mm%==09 (set mm=08&& set dd=31)
if %mm%==10 (set mm=09&& set dd=30)
if %mm%==11 (set mm=10&& set dd=31)
if %mm%==12 (set mm=11&& set dd=30)
)
echo 昨日は、%yy%年%mm%月%dd%日です。

echo.
pause
:: ----- prevdate.bat おわり -----

参考URL:http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if...続きを読む


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

人気Q&Aランキング