• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DOSコマンド DELを使って....)

WindowsのDOSプロンプトを使ってファイルの削除とリネームをする方法

このQ&Aのポイント
  • WindowsのDOSプロンプトを使用して、ファイル容量が0KBのファイルを削除する方法と、ファイルのリネーム(番号を詰める)方法について教えてください。
  • Unixベースのマシンからログファイルを取得し、WindowsXPマシンで一括してファイルの削除とリネームを行いたいです。
  • バッチを使用して、WindowsのDOSプロンプトを起動し、DELコマンドを使ってファイル容量が0KBのファイルを削除し、ファイルのリネームを行う方法について教えてください。また、Unixマシンからのログファイルの取得方法も教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

No3です。 VMSはUnixと関係の無いOSです。メーカーのDECがもうずいぶん前にCOMPAQに吸収され、そのCOMPAQもHPと合併したので、マイナーになり情報もあまりないでしょうね。 ; のあとの数字は世代番号じゃなかったでしたっけ。拡張子とは異なるので、扱いはFTPサーバーの処理次第だと思います。

その他の回答 (3)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

fileget.tstの中身を、 --------------------------   open マシン名   ユーザー名   パスワード   prompt   mget file1.log.*   quit ----------------------------- にすれば、file1.log.* に該当する存在するファイルだけがgetできます。 mget file*.log.* とかでも大丈夫。 バッチファイルで、ファイルサイズゼロのファイルだけを削除するのは、 for %%F in ( file1.log.* ) do if %%~zF == 0 del %%F です。コマンドを直接打つときは%は1つだけ。 番号を振り直すバッチ処理は面倒だけど出来ます。mget がうまくいかなければ再度聞いてください。

guest_zzzz
質問者

お礼

バッチの中で for ~ ができるとは....20年以上前のPC-DOSのコマンド本にも載ってましたが、 これまで使ったことありませんでした。 WindowsのDOSプロンプトから for /? でもヘルプが現れて目からウロコです。 もちろん、教えていただいた記述でoKBのファイルを削除できました。 で、mgetですが、実際、会社でいろいろ確認してみました。 Unixベースマシンとしていたのは Open VMS VAX というOSでした。 ログのファイル名は FILE_NAME.LOG;04 って感じのファイルです。(末尾の2桁数字が複数ある) Windowsからgetしようと試した結果が次です。 1.get FILE_NAME.LOG;04     とするとWindowsでは FILE_NAME.LOG ができて次の末尾05,06,07..のファイルは上書き 2.get FILE_NAME.LOG.04     とするとWindowsでは FILE_NAME.LOG.04 ができてる。次の末尾05のファイルもget OK。 3.mget FILE_NAME.LOG;*     とするとWindowsでは 1.と同じ結果 4.mget FILE_NAME.LOG.*     とするとWindowsでは 1.と同じ結果 なので、2.の記述でファイル1つづつを記述しないとならない状態です。     

guest_zzzz
質問者

補足

回答ありがとうございます。 なぜか、mgetコマンドが使えなかったんです...Unixマシンのせいなのか... for %%F in ( file1.log.* ) do if %%~zF == 0 del %%F については、明日以降、試してみます。 ありがとうございました。

  • Gletscher
  • ベストアンサー率23% (1525/6504)
回答No.2

forでループを組んで、if(exist・・・)を使って判断を入れれば、1行づつ書かなくても全てのファイルを舐めることはできますが、残念ながらファイル容量を所得するコマンドはありませんので、MS-DOSコマンドだけではできないですね。 ファイル名の変更は、renコマンドで良いですね。

guest_zzzz
質問者

お礼

回答ありがとうございます。 No.1で回答くださった方法、No.3で回答くださった方法を試してみます。

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.1

バッチ記述用の完全構造化言語のBSLスーパーバッチというソフトがあります。 WindowsPCで使用しますが、DOSプロンプト上で動作します。 #FSizeという「ファイルの大きさ」関数が使えますので、0バイトのファイルを消すことができます。 #IsFileという「ファイルの存在の判定」関数もあります。 もちろん、変数も使用できますので、希望通りのことができそうです。 一度使用したことがあるので、分からなければ聞いてください。 ヘルプは充実していますので、何かしらプログラムを作成したことがある人ならすぐ理解できると思います。 詳しくは、ダウンロードしてヘルプを参照願います。

参考URL:
http://www.vector.co.jp/soft/dl/win95/util/se070879.html
guest_zzzz
質問者

お礼

早速の回答ありがとうございます。 明日以降(明日とは言い切れない^^;)、試してみます。 結果は、またお知らせいたします。

guest_zzzz
質問者

補足

BSLスーパーバッチを試してみました。 ヘルプ参照してみましたが、残念ながら、プログラム書いたことのない私にはチンプンカンプンでした...。 「変数」と「環境変数」の違い、if else文とfor文の使い分けさえわかりません。 プログラムは20年くらい前、PC-DOSのREXXで1つだけバイオリズム計算を自作したことがあるくらいです。 Excelのマクロも自動記憶を使うくらいで.... また、よかったら、ご助言ください。

関連するQ&A