3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

copyコマンドでワイルドカード使用時の注意

Posted at

はじめに

業務でファイルコピーをする単純なバッチファイルを作成していたところ、copyコマンドで1つ引っかかったので備忘録代わりに投稿でもしてみようかな、と思い立ちました。
※ベースはほぼ出来てたのに大分放置してた・・・。

copyコマンド

ファイルAを複写してファイルBを作る、というのは説明するまでもありません。

ワイルドカード

今回のポイント。これも今更説明するまでも無いですが、ワイルドカード(*、?)の用途としては

1.ファイル名が一部しか特定出来なくても指定出来る
ファイル_20171005.txt を指定したいが、可変部の日付部分「20171005」は特定できないので

cp.bat
copy ファイル*.txt ファイル.txt

のようにすると日付部分から拡張子の前までがどんな文字でも指定出来ます。

2.条件に一致する複数のファイルをコピー元に指定出来る
同ディレクトリ上に、ファイルA.txt・ファイルB.txt が存在する場合

cp.bat
copy ファイル*.txt ファイルC.txt

を実行すると、ファイルA.txtとファイルB.txtの内容が結合されたファイルC.txtが作成されます。

ファイルA.txt
fileA
ファイルB.txt
fileB

↑の2ファイルの内容が結合されて

ファイルC.txt
fileA
fileB
 

問題点

実際に作成されたファイルを確認してみると、何故か最後に半角スペースが付与されています。
ちなみに上記例では元ファイルの最後に改行があるため、ファイルCの3行目が半角スペースのみの行になります。
元ファイルに改行が無ければ

ファイルC.txt
fileAfileB 

のように1行目の最後に半角スペースが付与されます。
(見た目でわかりにくくてすいません。どう書けばいいかわからなかったので・・・)

で、何が問題だったかというと、例えばシステムで読み込むテキストファイルをこの方法で作った場合、
この余計な半角スペースのせいでエラーになったりしてしまうんですね。

#解決策
copyコマンドでどうにかする方法が無かったので代替案としてxcopyを使いました。
xcopyならほぼ同じ使い方で上記現象は発生しませんでした。
調べ方が悪いのもあるかもしれませんが、特にこれといった情報が出てこないんですよねー・・・。
もしご存知の方いれば教えて頂けると嬉しいです。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?