- ベストアンサー
DOSコマンド(バッチファイル)の記述方法について
Webサイトで、掲示板のログを定期的にFTPダウンロードして管理する運用を考えています。 DOSのFTPコマンドでダウンロードして、タスクで定時実行する所まで、できたのですが、いつも決まった場所にダウンロードするため、データが毎回上書きされてしまいます。 それで、FTPダウンロードの直前に、DOSコマンド(バッチファイル)で別フォルダを作ってデータを退避させるようにしたいのです。 もしできれば『2006_02_20_16_00』など、バッチファイル実行時の日時(年月日、時刻まで)が分かるようなフォルダ名にしたいです。 そんな事できるのでしょうか? DOSコマンドに詳しくないので、分かる方教えてください。 ダウンロードするフォルダは、『c:\Backup\』だとして、書き方の例を教えてください。 よろしくお願いします。
- wwjd2005
- お礼率97% (35/36)
- Windows XP
- 回答数4
- ありがとう数5
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> もしできれば『2006_02_20_16_00』など、バッチファイル実行時の日時(年月日、時刻まで)が分かるようなフォルダ名にしたいです。 この部分だけについてコメントします。 set t=%time:~0,5% mkdir c:\Backup\%date:/=_%_%t::=_% でお望みのことができるのではないかと思います。ただし、set と mkdir の間で午前0時をまたぐとおかしなことになるので、その点はご注意ください。
その他の回答 (3)
- JP002086
- ベストアンサー率35% (1462/4171)
プログラム的に書くと、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スクリプトなら、何とかなりそうです。 アドバイス有難うございました。
関連するQ&A
- DOS バッチファイルコマンド記述について
DOSのバッチファイルを利用してコマンドを記述したバッチファイルを作り、 ドロップしたファイルのバイト数を見て1000バイト以上あったら指定のフォルダに 移動させたいと考えています。素人ながらに以下のファイルを作ってみたのですが うまく動いてくれません。添削して頂けると助かります。よろしくお願いします。 :start if %1""=="" goto end if "%~z1" gtr 1000 move "%1" C:\bk shift goto start :end
- ベストアンサー
- その他(プログラミング・開発)
- DOSコマンドで指定日数よりも過去のフォルダを削除
サーバ上のログファイルを日毎に次のようなフォルダにまとめて管理しています。 (ログフォルダは翌朝のDOSバッチジョブでBACKUP_(処理日付)のフォルダを作成してその下に*.*指定で全てのファイル(除 フォルダ)を移動して作成します。) 例. BACKUP_20041130 BACKUP_20041129 BACKUP_20041128 ・ ・ ・ BACKUP_20040311 BACKUP_20040310 このフォルダを処理日付から数えて90日より古いものを削除するDOSコマンドバッチファイル(日次実行)を作成したいです。 プログラムを作成すればこれを実現するのは可能なんですが、なんとかDOSコマンドだけでこの仕組を作りこめないものでしょうか? ご存知の方がいらっしゃったら教えて下さい。
- ベストアンサー
- その他(プログラミング・開発)
- DOSコマンドについて
教えてください。 DOSコマンドでコピーするバッチファイルを作っています。 主な目的はモバイルと自宅PCとのファイルのやりとりです。 copy C:\"Documents and Settings\(略)\*.*" d:\bp\mail みたいな感じでコピーしています。 フォルダ内にファイルがたくさんあると、時間が掛かってしまいます。更新されているものだけを上書きするようにはできないものでしょうか。
- ベストアンサー
- Windows XP
- バッチファイルの記述について
CドライブにあるAとBのフォルダをMO(E)にコピー(MOが入っているか確認をさせてから、上書き保存)するバッチファイルを書きたいのですがどのように記述したらよいのでしょうか?。DOSの知識が無いのでよろしくお願いいたします。 AとBがDドライブにあった場合も併せてお願いいたします。
- ベストアンサー
- Windows XP
- DOSバッチのインターバルは可能?
お世話になります。 WindowsのDOSでバッチファイルを作成しています。 バッチファイルの中で自動的に10秒間待機してから実行したいのですがそのようなコマンドはあるのでしょうか。 いろいろ調べておりますが見当たりませんのでこちらで質問させて頂きました。 ご教授宜しくお願い致します。
- ベストアンサー
- Windows系OS
- DOS findコマンドのバッチでストールする
DOSコマンドプロンプトで.batファイルを作成。 内容は find "2007:01" access_log_2007_04_11.txt >log2007041101.csv このバッチファイルを、検索するaccess_log_2007_04_11.txt と同じフォルダー上において、ダブルクリックで起動すると。 コマンドプロンプトが開くのだが、以前実行した、 find "2007:00" access_log_2007_04_05.txt >log2007040500.csv が、延々と実行され。 コマンドプロンプトを閉じても log2007040500.csv を、消しても消しても、作成される。 システムを落とすしかなくなる。のです。 4月の頭では正しく動作していたんですが???
- ベストアンサー
- その他(OS)
- DOSのUSコマンドを含む処理ををバッチファイルから行う方法
あるDOSの実行ファイル(d:\abc\test.exe)を起動するとき、 日本語環境では文字化けするので、英語環境にするため、 現在は、コマンドプロンプトを立ち上げた後、 us d: cd abc test と打ち込んで実行しています。 かなり、頻繁に実行するものですから、毎回この操作を行うのは ちょっと面倒です。 そこで、これをバッチファイルにして、それをクリックしただけで 上と同じことができるようにしたいと考えています。 バッチファイルをどのように記述したら良いか教えていただけませんか? 初歩的な質問で恐縮ですが、よろしくご教授お願いいたします。 OSはWindows2000です。
- ベストアンサー
- Windows NT・2000
- バッチファイルのコマンドについて
バッチファイルのコマンドについて ウィンドウズです。 バッチファイルにて、大量のファイルの名前を以下の通りにリネームしたいです。 どのようにコマンドを組めばいいのか教えてください。 また、リネームしたファイルは1つ上のフォルダに移動させたいです。 1、ファイルの1~3文字目を削除してリネームして移動するコマンドデータ 2、ファイルの3~5文字目を削除してリネームして移動するコマンドデータ 例:『123456789』というファイル名に対して、 『456789』というファイル名にして移動するコマンドと 『126789』というファイル名にして移動するコマンドが欲しいです。 データは、名前も文字数もバラバラです。 知っている方がいたらお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- 1つ下のファイルをコピーするバッチファイル
コマンドプロンプトで実行するバッチファイル(x.bat)で C:\Aというフォルダのさらに1つ下のフォルダ (このフォルダは1つのみで名前は毎回変化します) の中にあるc.mpgというファイルを D:\Bフォルダにコピーするバッチファイルを 作りたいのですがどのように記述すればよいのでしょうか。 例えば、C:\A\data_20120922195626というフォルダ (data_20120922195626というフォルダ名は任意の名前ですが C:\Aフォルダの中にはこのフォルダ1つしかありません) の中に\c.mpgというファイルがあるとします。 バッチファイル x.bat を実行すると D:\Bフォルダにc.mpgをコピーしたいのです。 なお、data_20120922195626というフォルダの名前は バッチファイルを実行する時には毎回異っていますが バッチファイル実行中は変化しません。 VBscriptやwshなどは使わずWindosXPの標準DOS機能のみで お願いします。(WindosXP SP3)
- ベストアンサー
- その他MS Office製品
- テキストファイル結合のバッチコマンド
DOSプロンプトで、「copy」というコマンドを使って特定のフォルダ内のテキストファイルを全て読み込んで結合するバッチファイルを作りたいのですが、わかる方教えてください。
- ベストアンサー
- オフィス系ソフト
お礼
有難うございます。 mkdirコマンドのところで、日付の名前がついたディレクトリと時刻の名前がついたディレクトリが別々になってしまったのですが、今回は一日一回の定時バックアップの自動化が目的なので、日付のディレクトリだけ作るようにして、無事解決しました。 バッチファイル、意外と面白いですね。こんな事もできるのかって、今更ながら感心しました。(笑)
補足
あ、それと報告忘れてました。 バッチファイルにFTPコマンドを書いてダウンロードしたファイルを、No.4さんに教えていただいた内容で、日付のディレクトリに格納するという形で運用スタートしました。 mkdir c:\FTP_Log\%date:/=_% move c:\FTP_Log\*.cgi c:\FTP_Log\%date:/=_% こんな感じでバッチファイル作って、毎晩タスク実行でバックアップ取る事にしました。 他の回答いただいた方も、ありがとうございました。