- ベストアンサー
DOSコマンド(バッチファイル)の記述方法について
Webサイトで、掲示板のログを定期的にFTPダウンロードして管理する運用を考えています。 DOSのFTPコマンドでダウンロードして、タスクで定時実行する所まで、できたのですが、いつも決まった場所にダウンロードするため、データが毎回上書きされてしまいます。 それで、FTPダウンロードの直前に、DOSコマンド(バッチファイル)で別フォルダを作ってデータを退避させるようにしたいのです。 もしできれば『2006_02_20_16_00』など、バッチファイル実行時の日時(年月日、時刻まで)が分かるようなフォルダ名にしたいです。 そんな事できるのでしょうか? DOSコマンドに詳しくないので、分かる方教えてください。 ダウンロードするフォルダは、『c:\Backup\』だとして、書き方の例を教えてください。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> もしできれば『2006_02_20_16_00』など、バッチファイル実行時の日時(年月日、時刻まで)が分かるようなフォルダ名にしたいです。 この部分だけについてコメントします。 set t=%time:~0,5% mkdir c:\Backup\%date:/=_%_%t::=_% でお望みのことができるのではないかと思います。ただし、set と mkdir の間で午前0時をまたぐとおかしなことになるので、その点はご注意ください。
その他の回答 (3)
- JP002086
- ベストアンサー率34% (1535/4403)
プログラム的に書くと、DATE名のフォルダを指定した所に (例えば、mkdir c:\backup\ %date のように)作りたいのですよね? ちなみに、DOSコマンドでdateと入力すると日付が返って来ますが 返って来た数値を変数として直接取り込むことは出来ません。 一旦、ファイルに出力してから、FINDでファイルの中にある文字列を、変数に与えると言う考え方もあるのですが、FINDはその文字列が含まれる「行」になりますので、私の思い当る所では無理かと思いますよ。 ようるすに、バッチファイルの書き方から言うと下記のようになります --ここから :start del datefile.txt set date1 = %1 :date date > c:\datefile.txt if find c:\datefile.txt /v "200" ・ ・ :end exit --ここまで と進めていくのですが、単純作業の簡素化にしか使えません。 ようするに、日付ファイルがあらかじめ作成されており 参照可能な状態であれば、del Datefile.Txt は不要です。 って考えると、同じ手間なので・・・・・ ちなみに、バッチファイルの書き方はそんなに難しくなく コマンドプロンプトより "cmd /?"で使える変数関係が見れます。 参考にならないかもしれませんが~
お礼
確かにこれなら、ある程度実現できそうですが、うぅん。。。 アドバイスを参考に色々やってみましたが、やはり無理がありますね。(笑) でも、とても参考になりました。ありがとうございました。
- 7colors
- ベストアンサー率25% (29/114)
md:ディレクトリを作るコマンド move:移動するコマンド 私の場合は、move [送り側] [受け側(ファイル名変更可)]の記述でファイル名を変更してバックアップフォルダに移動しちゃっています。 以下のページに使用方法とか載っていると思いますよ。
お礼
なるほど、これならシンプルで実現しやすそうです。 無精者なもんで、できるだけ人力の介入を無くしたいと思っていたのですが、しばらく教えていただいた手順で手動バックアップでやって見ます。 アドバイスありがとうございました。
- popesyu
- ベストアンサー率36% (1782/4883)
どうしてもバッチが良いということなら http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html この辺参考に頑張ってください。 ただそのページにも書いていますが、そこまで苦労して組んでも応用性が殆どありませんから、WSH(VBやJavaスクリプト)でやった方がもっと楽に、高度なものが作れると思います。WSHへもそのページからリンクが張られてあるのでご参考に。
お礼
なるほど。。。 DOSのFTPコマンドだと、mgetコマンドでディレクトリが取得できないなど、小回りが利かないようですね。 やはり他の手段を考えます。Javaスクリプトなら、何とかなりそうです。 アドバイス有難うございました。
お礼
有難うございます。 mkdirコマンドのところで、日付の名前がついたディレクトリと時刻の名前がついたディレクトリが別々になってしまったのですが、今回は一日一回の定時バックアップの自動化が目的なので、日付のディレクトリだけ作るようにして、無事解決しました。 バッチファイル、意外と面白いですね。こんな事もできるのかって、今更ながら感心しました。(笑)
補足
あ、それと報告忘れてました。 バッチファイルにFTPコマンドを書いてダウンロードしたファイルを、No.4さんに教えていただいた内容で、日付のディレクトリに格納するという形で運用スタートしました。 mkdir c:\FTP_Log\%date:/=_% move c:\FTP_Log\*.cgi c:\FTP_Log\%date:/=_% こんな感じでバッチファイル作って、毎晩タスク実行でバックアップ取る事にしました。 他の回答いただいた方も、ありがとうございました。