[前の記事]« ループでのカウントの取り方
[次の記事]ファイルの拡張子を削除したい »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「DATE,TIME…日付、時刻の取得/利用」索引へ
▲カテゴリー「DIR…ディレクトリ(フォルダー)/ファイルの一覧」索引へ

当日に作成されたファイルの名前を検出したい

879.
新規作成されたファイル名を取得したいです
2005年12月12日(月) 11時37分
むらー
●OS:Windows XP

バックアップの終了後、c:\logにログファイルが新規作成されます。このファイル名は任意の数字6桁(例:009717.log)です。本日新規作成されたファイル名を取得する方法を教えてください。
884.
Re:新規作成されたファイル名を取得したいです
2005年12月12日(月) 16時44分
YanaKen◆c0rnJ1Q=
むらーさん こんにちは。

>バックアップの終了後、c:\logにログファイルが新規作成されます。このファイル名は任意の数字6桁(例:009717.log)です。本日新規作成されたファイル名を取得する方法を教えてください。

 あくまでも「本日新規作成」という点が前提だとするならば、ファイルのタイムスタンプと当日の日付情報(環境変数 %date% )をつき合わせて検出する手法、ということになると思います。(日付にかかわらず「最新のファイルを探し出す」とかだと別の処理になります)

 頭の体操がわり(^^;に、サンプルを1つ作ってみました。

@echo off
setlocal ENABLEDELAYEDEXPANSION
rem 最近の他のツリーでも話題に出ている「遅延環境変数」を使用します。
rem 詳細は set /? 、 setlocal /? で情報を得てください。

set chk=yyyy/mm/dd
rem 以下、環境変数dateがyyyy/mm/ddの形式であることが前提のサンプルです。

for %%I in (*.log) do (
 set chk=%%~tI
rem forコマンドの機能を用いてファイルのタイムスタンプを環境変数chkに代入。
rem 詳細は for /? で情報を得てください。

 set chk=!chk:~0,10!
rem 環境変数dateのフォーマットにあわせて、後半の時刻情報を切り捨てています。
rem 詳細は set /? で情報を得てください。

 if %date%==!chk! echo %%I
)
※%%Iが検出されたファイル名になります。
※forで抽出できるタイムスタンプは「最終更新日付」です。
 新規に作成されたもの以外でも、当日に編集されたものが同じディレクトリに
 あればそれも検出されてしまいます。
 それでは不都合な場合は dir コマンドを利用するなど、別の手法が必要になる
 と思います。

YanaKen
885.
Re:新規作成されたファイル名を取得したいです
2005年12月13日(火) 11時09分
むらー
YanaKenさん、早速のご返答ありがとうございます。


> あくまでも「本日新規作成」という点が前提だとするならば、ファイルのタイムスタンプと当日の日付情報(環境変数 %date% )をつき合わせて検出する手法、ということになると思います。(日付にかかわらず「最新のファイルを探し出す」とかだと別の処理になります)

はい、1日1ファイルが必ず新規作成されます。同じパスにある他のファイルは更新されません。
作成して頂きました内容をテキストにコピペし、バッチを動作させました。DOS窓が一瞬表示される以外は、特に動作がありませんでした。ただコピペすれば良いというわけでは無いのでしょうか?


>※%%Iが検出されたファイル名になります。
>※forで抽出できるタイムスタンプは「最終更新日付」です。
> 新規に作成されたもの以外でも、当日に編集されたものが同じディレクトリに
> あればそれも検出されてしまいます。
> それでは不都合な場合は dir コマンドを利用するなど、別の手法が必要になる
> と思います。

今後、Windows NTにも拡張して行こうと考えています。その場合、%~tI変数が無いためdirコマンドを使用するバージョンも併せて作成したいと思います。
以下は自分でイメージしたものです。

for %%I in ('dir /tc | find ('date /t')') do set TT=%%I

作成日が本日のファイル名を、変数TTにセットするという内容です(まったく素人のため、構文も謝りだらけでまったく動作しません)。
このような形でファイル名を取得することは可能でしょうか?

お手数をおかけしますが、宜しくお願い致します。
887.
Re:新規作成されたファイル名を取得したいです
2005年12月13日(火) 22時16分
YanaKen◆c0rnJ1Q=
むらーさん

>作成して頂きました内容をテキストにコピペし、バッチを動作させました。DOS窓が一瞬表示される以外は、特に動作がありませんでした。ただコピペすれば良いというわけでは無いのでしょうか?

 ぼくが書いたのは当然単なるサンプルで、
「日付が本日のものが見つかればそのファイル名を表示する」
 ……というだけの内容になっています。

 先に「コマンド・プロンプト」をメニューから開いてその中で実行するか、もしくは末尾にpauseを入れれば、メッセージを見逃さずに済むでしょう。
(コマンド・プロンプトは、XPの場合、スタート→プログラム→アクセサリにあります)

YanaKen
888.
Re:新規作成されたファイル名を取得したいです
2005年12月14日(水) 13時14分
otn
>> あくまでも「本日新規作成」という点が前提だとするならば、ファイルのタイムスタンプと当日の日付情報(環境変数 %date% )をつき合わせて検出する手法、ということになると思います。(日付にかかわらず「最新のファイルを探し出す」とかだと別の処理になります)
>
>はい、1日1ファイルが必ず新規作成されます。同じパスにある他のファイルは更新されません。

ということは、最新のファイルを探すということでよさそうですね。

for /f "delims=" %%A in ('dir /b /od c:\log') do set FILE=%%A
899.
Re:新規作成されたファイル名を取得したいです
2005年12月19日(月) 16時48分
むらー
YanaKenさん、ご返答が遅れてしまい、申しわけございません。

ご回答ありがとうございました。自分は、まだコチラで質問するための知識を持ち合わせていないことが分かりました。勉強して再度チャレンジさせて下さい。

その際は、宜しくお願い致します。
m(__)m
900.
Re:新規作成されたファイル名を取得したいです
2005年12月19日(月) 16時51分
むらー
otnさん、ご回答ありがとうございます!
また、ご返答が遅れてしまい、申しわけございません。

早速、以下のコマンドを用いてバッチファイルを作成致します。結果につきましては、後日返答させて下さい。

本当に、ありがとうございました。

>ということは、最新のファイルを探すということでよさそうですね。
>
>for /f "delims=" %%A in ('dir /b /od c:\log') do set FILE=%%A
902.
Re:新規作成されたファイル名を取得したいです
2005年12月20日(火) 11時09分
むらー
無事、新規作成されたファイルのファイル名を取得することが出来ました。

otnさん、ご回答ありがとうございました!!
 

 

879.新規作成されたファイル名を取得したいです むらー 05/12/12(月) 11:37
884.Re:新規作成されたファイル名を取得したいです YanaKen◆c0rnJ1Q= 05/12/12(月) 16:44
885.Re:新規作成されたファイル名を取得したいです むらー 05/12/13(火) 11:09
887.Re:新規作成されたファイル名を取得したいです YanaKen◆c0rnJ1Q= 05/12/13(火) 22:16
899.Re:新規作成されたファイル名を取得したいです むらー 05/12/19(月) 16:48
888.Re:新規作成されたファイル名を取得したいです otn 05/12/14(水) 13:14
900.Re:新規作成されたファイル名を取得したいです むらー 05/12/19(月) 16:51
 
 


カテゴリー「DATE,TIME…日付、時刻の取得/利用」索引へ
カテゴリー「DIR…ディレクトリ(フォルダー)/ファイルの一覧」索引へ

 

カテゴリー一覧

902.Re:新規作成されたファイル名を取得したいです むらー 05/12/20(火) 11:09
FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2005年12月12日 14:32に投稿されたエントリーのページです。

ひとつ前の投稿は「ループでのカウントの取り方」です。

次の投稿は「ファイルの拡張子を削除したい」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja