- ベストアンサー
MS-DOSのコマンドでファイルをクリアするコマンドありますか?
DOSに関してはシロート同然のわたしです。 お助け下さい! あるテキストファイルをの中身だけを空にしたいのですが、 MS-DOSのコマンドで、ファイル名を指定して ファイルの中身を全て消すコマンドってありますでしょうか? ある様でしたら、実際のコーディング例も教えていただけませんか? (「aaa.txt」と言うファイルをクリアするとしたら・・・?) それと、もし、MS-DOSのコマンドの一覧が分かるホームページなどありましたら合わせて教えていただけませんでしょうか?
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
これが正式な使い方かはわかりませんが(オプションの説明を見ていると違うような気が・・・)、/Iオプションをつけることで一応確認メッセージを消せるようです。 動作としては、コピー元のファイルが一つの時はコピー先に指定したものをファイルとして、コピー元のファイルが複数ある場合はコピー先をディレクトリとして扱うようになります。 ちなみに/Iの意味は、オプションの説明によると、 「受け側がなく、複数のファイルをコピーする場合、受け側をディレクトリとしてコピーします。」 だそうです。 英語サイトの説明には 「By default, xcopy prompts you to specify whether Destination is a file or a directory.」 とあるので、動作としてはこれであっているのかもしれません。 長くなりましたけど、 xcopy /I コピー元ファイル名 コピー先ファイル名 で確認メッセージなしで0バイトのファイルもコピーできるようになると思います。
その他の回答 (8)
- hofuhofu
- ベストアンサー率70% (336/476)
#8の参考URLにしっかりと、 > You can suppress this message by using the /i command-line option, との記述がありました。 コピー元に複数のファイルもしくはディレクトリが指定されたときには、即コピー先をディレクトリを見なすため、メッセージを出す必要がなくなるとのことです。
- yakki_
- ベストアンサー率15% (2/13)
回答の流れに沿うかどうか分かりませんが、こんなバッチファイルを作ってみました。 kara.bat←バッチファイル名 ↓内容 del %1 type nul > %1 例えば、BBB.TXTの中身を空にするのであれば、 kara BBB.txt[enter] とすると、delコマンドで削除し、nul(空)を中身としてBBB.TXTを作りなおします。 一応、Windows98SEのDOSプロンプトで動作の方は確認しています。 それから、アクセスは拒否されました。は、多分読み取り属性が付いているからではないでしょうか? attribコマンドで、該当するファイルの属性にRが付いていないか確認してみては? >attrib aaa.txt[eneter] で、aaa.txtの属性が表示されます。
お礼
バッチファイルで処理した事がなかったので、試してみます。 この方法だと、バッチファイル名の後にファイル名を指定する事でファイルクリアができるんですね? 勉強になります! ありがとうございました!
- Traja
- ベストアンサー率19% (107/546)
OSとかの情報が無いんですが。。。 例えばWin2KのDOS窓で 読み取り専用のファイルaaa.txtに対して copy zero.txt aaa.TXT ってすると アクセスが拒否されました。 0 個のファイルをコピーしました。 と言った結果が帰ってきます。 ファイルの属性、ファイル名の誤りなど確認してみては如何でしょうか? ありがちなのが、長いファイル名とか間にスペースのあるファイル名とかを 誤った指定方法でコピーしようとしているとか 意外にケアレスミスだったりします。
お礼
私の使っているのはWIN98のDOS窓なんです。 名前は間違っていないと思うんですが・・・ そうなんです、 0 個のファイルをコピーしました。 ってメッセージが出ます。 でも、実際にはぜんぜんコピーされていなんです。 コピーしました、といいながらコピーされていないんです。 で、困ってまして・・・ #5で書いて頂いたご回答を見ると、仕様でできないんですよね・・・
- hofuhofu
- ベストアンサー率70% (336/476)
仕様です。 http://forum.nifty.com/fpcu/dosvcmd/copy.htm NT系以外のdosのcopyではそうなるそうです。 どうしてもcopyでやりたければxcopyを使うことになります。 小さいファイル(0バイトのものを含む)なら、 type コピー元のファイル名 > コピー先のファイル名 で一応コピーはできます。 #3の回答はこれの応用です。 ちなみにNULはdosが用意しておいてくれる、0バイトのファイルと思っていてください。 本当は全然違いますけど、まともに話すとややこしくなるので・・・
お礼
度々、ありがとうございます! そうなんです、XCOPYコマンドも使用してみたんですが、 XCOPY A:\BBB.TXT A:\'AAA.TXT とすると、 AAA.TXTは受け取側のファイル名ですか、ディレクトリ名ですか (F=ファイル、D=ディレクトリ)? という、確認メッセージが戻ってくるのです。 スル~っとコピーできないので、他の方法を考えたのですが・・・ このメッセージ回避方法は無い・・ですか?
補足
追記です! お願いしておいて何ですが、 #3でご回答いただいた方法で問題は大解決!!しましたので、 お時間があれば・・・で結構です。 よろしくお願い致します。
- Traja
- ベストアンサー率19% (107/546)
>空のファイルをDOSコマンドでコピーしてるんですが、 >何故かコピーできないんです。 こっちを解決するのが本筋ですね。 エラーメッセージとか表示しないんですか?
お礼
えーっと、確か、 「O個のファイルがコピーされました」とゆー、 ふざけたメッセージだったと思うんです。 0個って・・・コピーされてないじゃないですか、ねぇ!! #3 hofuhofuさんの方法でも処理可能なんですが、 もし、0件ファイルのコピー方法をご存知でしたら そちらも教えていただけませんか?
- hofuhofu
- ベストアンサー率70% (336/476)
type NUL > aaa.txt でどうでしょう。 もっと良い方法があるかもしれませんけど。 http://www1.plala.or.jp/tsune/2msdos.html#MSDOS_cmd_sh http://www.nara-su.ac.jp/~takeyama/material/msdos/dos_96.htm http://homepage1.nifty.com/nitros/wmt/dos/doscommand.htm http://www.mef.or.jp/bnm/kinosita/k0001/dospro.htm
お礼
おぉ・・・!! できました!簡単に! 感謝ですぅー!! ありがとうございました!!
- Traja
- ベストアンサー率19% (107/546)
簡単に出来そうかな?と思いましたがやってみると あれれ?出来ないな~。 と言うことで、そのものズバリのコマンドは無いですね。 #1の方と違う方法で無理矢理実現 予め、mkdir zzz で空っぽのディレクトリを作成します。 次に、dir /b zzz > aaa.txtとすれば空のファイルになります。 UNIXであれば、ヌルファイルって言うのがあるので簡単なんですけど。。。
お礼
ありがとうございました。 そうでしょ、そうでしょ、そんなんです。 簡単にはできないでしょ。 なんですっきりとしたコマンドをつくらないんでしょうねー。 (-_-メ) やってみます。
- hyper_tora
- ベストアンサー率15% (15/98)
中身が空のファイル(empty.txt)を予め作成しておいて aaa.txt というファイル名で複製する方法ではダメですか? delete aaa.txt 一度 aaa.txt を削除 copy empty.txt aaa.txt empty.txt をコピーして aaa.txt を作成 ただし、Windowsに付属のメモ帳では空のファイルを作成できませんので、他のテキストエディタ(例えば秀丸など)を使って下さい。
お礼
アドバイス、ありがとうございました。 実は、本当にやりたかった事は、hyper_toraさんがおっしゃった事、 空のファイルのコピーなんです!! ところが!! 空のファイルをDOSコマンドでコピーしてるんですが、 何故かコピーできないんです。 だもんで、一旦、1レコードあるファイルを作っておいて後でクリアしようと思ったんですが・・・
お礼
本当に、感謝、感謝、感謝!!!です。 できました!0件のファイルのコピー! 今回は、本当に助かりました! 仕事でどうしても早急に必要だったのですが、方法がわからなくて むちゃくちゃ困っていたんです。 色々、調べていただいて、本当にありがとうございました! ほんとに、いい人ですねー。感謝です!!