バッチファイルのcopyコマンドについての話

 

バッチファイルの”copy”コマンドを使用して気がついたことがあったので、備忘録として残しておきます。

 

 

 

copyコマンド

ファイルをコピーするためのコマンドです。

書き方は、検索するとたくさん出てくるので割愛。

【書き方】

copy [コピー元のファイルパス]  [コピー先のファイルパス]

copy "C:\test\TestFile1.txt" "C:\test\TestFile2.txt"

 

ワイルドカード

決まっていない文字、英数字が入っていても文字が入っていると認識させるための特殊文字

"*"や"?"がある

"*"は文字数指定なしで何か文字

 


が入っているという場合記載

"?"は文字数は決まっているけれど、入っている文字が不定の場合に使用する。

 

問題

Excelファイルをコピーと合わせてリネームして保存して、処理した結果をコピーしたExcelファイルにデータを入力するような処理を自動化するようなbatを作成していた際にExcelファイルがコピーミスしていることに気が付きました。

f:id:sorehaya:20211204110259j:plain

f:id:sorehaya:20211204110248j:plain
"copy"コマンドの使い方を間違えているのか調べて、試行錯誤した結果、

Microsoftのテクニカルドキュメントに原因が載っていました。

 

原因

Windows が CTRL + Z をファイルの終端文字として扱うのが原因のようです。

Windowsの仕様なら仕方がない。

ファイル終端文字については、また別途調べて記録残すので、今回は特に触りません。

そういうものだと思うことにします。

 

対策①

Microsoftのテクニカルドキュメントでは、

ワイルドカード文字を使用して複数のバイナリファイルを1つのファイルに結合するには、 /bを含めます。 これにより、Windows が CTRL + Z をファイルの終端文字として扱うのを防ぐことができます。 たとえば、次のように入力します。」

と記載されています。

copy /b "C:\test\TestFile1.txt" "C:\test\TestFile2.txt"

対策②

"xcopy"コマンドでコピーを行う

xcopy "C:\test\TestFile1.txt" "C:\test\TestFile2.txt"

 

対策③

コピーした後にリネームする。※コピー先のファイルパスではファイル名まで記載しないでコピーするディレクトリを分ける必要あります。

copy "C:\test\TestFile1.txt" "C:\test\work"
ren "C:\test\work\TestFile1.txt" "TestFile2.txt"

 

常に使われている方なら当然のことなのかもしれませんが、たまに使うときにハマる仕様だと思いますので、お気を付けて

最近もの忘れが激しくてどんどん書き方の要所を忘れていく・・・・

 

   

ロリポップ!レンタルサーバー!はあなたの「やってみたい!」を応援します!
ロリポップ!なら、ホームページ、ブログ、ネットショップ…
これらが今すぐ、そして簡単にできちゃう!
マニュアルやライブチャットを完備しているので、ホームページ初心者でも安心。
これだけついてるのに月額110円〜ととってもお得。
もちろん無料のお試し期間も10日間あるので安心ですね。

▼ロリポップ!レンタルサーバーはこちら