593) 動的な変数の取得 ぽち 2003/09/09(火) 10:40 |
|
DOSバッチにて次のようなことをしたいです。 1.毎日特定時間にバッチが走る 2.あるファイルを別ファイル名にリネームする 1.は可能だということはわかっています。 2.についてはリネームするところまではわかります。 しかし毎日走らせると、リネーム後のファイル名を一意 にする必要がでてきます。 そこで、現在の日付やら何やらでファイル名を付与しよう かと思っているのですが、動的な変数の取得を音字列として バッチ内に操作するにはどのようにすれば良いのでしょうか? また、日付などでなくもっと簡単に一意性を確保できるので あればそちらも考えていきたいと思っています。 よろしくお願い致します。 |
|
596) Re:動的な変数の取得 じゃく 2003/09/09(火) 11:06 |
|
http://homepage1.nifty.com/jak/batch/date.html |
|
>そこで、現在の日付やら何やらでファイル名を付与しよう >かと思っているのですが、動的な変数の取得を音字列として >バッチ内に操作するにはどのようにすれば良いのでしょうか? > 現在(バッチ実行時)の日付を求める方法は過去ログにも多数ありますが、 (1)環境変数 date を使う方法 set fname=%DATE:/=% echo SAMPLE > %fname%.txt (2) date コマンドを使う方法 for /f "tokens=1-3 delims=/" %%a in ('date /t') do set fname=%%a%%b%%c echo SAMPLE > %fname%.txt 以上のサンプルで日付のファイル名の作成方法はおわかりになりますか? ちなみに、Windows 2000/XP系での動作です。(OS不明のため) 95/98系ですとちょっと工夫が必要です。(不可能ではない) |
|
600) Re:動的な変数の取得 YanaKen 2003/09/09(火) 14:26 |
|
ぽちさん >また、日付などでなくもっと簡単に一意性を確保できるので >あればそちらも考えていきたいと思っています。 実用上「一意であればよい」ということでしたら、(これまたWindows2000/XP前提ですが)超簡易な方法としては↓を使うテも考えられますね。 >%RANDOM% - 0 から 32767 の間の任意の 10 進数に展開します :REPEAT SET FILENAME=%RAMDOM%.TXT IF EXIST %FILENAME% GOTO REPEAT ※ただし、フォルダ内の既存ファイル数が多ければ多いほど新しい名前の生成に時間がかかることになるし、0.TXTから32767.TXTまでがすべてフォルダ内に揃ってしまうと無限ループにはまりますが(^^;。 YanaKen |
|
605) Re:動的な変数の取得 Hellcat 2003/09/09(火) 21:02 |
|
>また、日付などでなくもっと簡単に一意性を確保できるので >あればそちらも考えていきたい 一意な名称を取得する方法として次のような手法もあります。 フリーソフトのBATUTY(BU)を使います。 【使い方】 例えばC:\TAK\WORKディレクトリー上で新たなファイルを作成するため、一意な任意のファイル名称を取得したい場合は BU TEMPNAME C:\TAK\WORK とします。 私の手許の環境で実行したところ、結果は以下のような結果が標準出力に出力されました。 C:\TAK\WORK\BECJCFDK さらにもう一度実行したところ、結果は以下のようでした。 C:\TAK\WORK\BECOCIEC ということで、当該ディレクトリー上に存在しないファイル名称を取得できます。 これはテンポラリーファイルを作成する場合に用いるものですが、お尋ねの趣旨に合うものと思われますので紹介します。 カレントディレクトリー上で一意な名称を取得したい場合は BU TEMPNAME とします。 私の手許の環境では \BEDCAAAP と出力されました。 この出力結果を環境変数(UNIQ)に代入したい場合は WinXPなどの場合 FOR /F "usebackq delims==" %i IN (`BU TEMPNAME C:\TAK\WORK`) DO SET UNIQ=%i (FORコマンドはちょっと自信がありませんが、取りあえず私の環境では動きました) Win9x, Meなどの場合 BU -nUNIQ TEMPNAME C:\TAK\WORK とします。 【所在】 BATUTY(BU)は、以下にあります。 http://www.vector.co.jp/soft/dos/util/se023753.html |
|
this article refers Vector Soft Library..
|