[前の記事]« 6桁の日付を使いたい
[次の記事]複数ファイル名の4桁年号を2桁にリネームしたい »

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

▲カテゴリー「DATE,TIME…日付、時刻の取得/利用」索引へ

9:59までの%Time%の先頭1文字空白の解消方法

723.
午前9:59までの%Time%による時刻取得について(先頭1文字に空白混入)
2004年08月11日(水) 11時21分
TOHRU
set NowDate=%date:~2,4%%date:~7,2%%date:~-2%
set NowTime=%time:~0,2%%time:~3,2%
set NowDateTime=%NowDate%%NowTime%

move /Y D:\DBBACKUP\backup.csv D:\DBBACKUP\処理済\%NowDateTime%_backup.csv

過去ログを参照しながらこのようなバッチファイルを作成いたしました。
しかしながら、午前9時59分以前に実行すると時刻の先頭に
スペース1文字が混入してしまいコマンド構文エラーとなってしまいます。

◆10時以降
move /Y D:\DBBACKUP\backup.csv D:\DBBACKUP\処理済\200408081001_backup.csv

◆10時以前(959の前に半角スペースが入ってしまい構文エラー)
move /Y D:\DBBACKUP\backup.csv D:\DBBACKUP\処理済\20040808 959_backup.csv

どうにかうまく回避する方法は無いでしょうか?
できれば10時以前の場合、時刻の10の位にゼロを埋め込みたいのですが・・・
(例:200408080959_backup.csv)

コントロールパネルの時刻の形式を"HH:MM:SS"に変更してみたのですが、改善されませんでした。

OSはWindows 2000を使用しております。
お手数をおかけいたしますが、よろしくお願いいたします。
725.
Re:午前9:59までの%Time%による時刻取得について(先頭1文字に空白混入)
2004年08月11日(水) 11時56分
oo
>set NowDate=%date:~2,4%%date:~7,2%%date:~-2%
>set NowTime=%time:~0,2%%time:~3,2%

set NowTime=%NowTime: =0%

>set NowDateTime=%NowDate%%NowTime%

>move /Y D:\DBBACKUP\backup.csv D:\DBBACKUP\処理済\%NowDateTime%_backup.csv

あと、タイマーで実行なら大丈夫でしょうが、手動で実行するなら、0 時の直前に実行すると日付け取得と時刻取得が日をまたいでしまう可能性があるので考慮が必要です。
727.
Re2:午前9:59までの%Time%による時刻取得について(先頭1文字に空白混入)
2004年08月11日(水) 13時32分
TOHRU
set NowDate=%date:~2,4%%date:~7,2%%date:~-2%
set hh=%time:~0,1%9
set NowTime=0%time:~1,1%%time:~3,2%
if %hh% GEQ 10 set NowTime=%time:~0,2%%time:~3,2%
set NowDateTime=%NowDate%%NowTime%
echo %NowDateTime%

このような記述をすることで10:00以降と9:59以前どちらでもスペースが混入されることなく日付+時刻を取得することができました。
ありがとうございました。(助かりました)
728.
Re3:午前9:59までの%Time%による時刻取得について(先頭1文字に空白混入)
2004年08月11日(水) 15時36分
oo
>set NowDate=%date:~2,4%%date:~7,2%%date:~-2%
>set hh=%time:~0,1%9
>set NowTime=0%time:~1,1%%time:~3,2%
>if %hh% GEQ 10 set NowTime=%time:~0,2%%time:~3,2%
>set NowDateTime=%NowDate%%NowTime%
>echo %NowDateTime%

>このような記述をすることで10:00以降と9:59以前どちらでもスペースが混入されることなく日付+時刻を取得することができました。
>ありがとうございました。(助かりました)

なんかやけに複雑なんですけど、私の書いたように、空白を0に置換する方法でまずかったですか?今時刻を一時的に変えてWin2000で確認しましたが。

あと蛇足ですが、%DATE%の書式は
Win2000 →水 2004/08/11
WinXP   →2004/08/11
と違うので、年月日の取り出しはすべて右端から何文字目から何文字と指定するとどちらのバージョンでも動くスクリプトになります。
729.
Re4:午前9:59までの%Time%による時刻取得について(先頭1文字に空白混入)
2004年08月11日(水) 17時22分
TOHRU
set NowDate=%date:~2,4%%date:~7,2%%date:~-2%
set NowTime=%time:~0,2%%time:~3,2%
set NowTime=%NowTime: =0%
set NowDateTime=%NowDate%%NowTime%

725で書かれていた方法でうまくいきました。(勘違いしていました)
こちらのほうがシンプルですね。

>年月日の取り出しはすべて右端から何文字目から何文字と指定

右からN文字目からN文字指定はどのように記述すればいいのでしょうか?
CMD /?を読んでみたのですが、よくわかりませんでした。(過去ログにも無さそうです・・・。)

もし書式(それとも複数行での組み合わせ?)をご存じでしたらお教えいただけないでしょうか?
730.
Re5:午前9:59までの%Time%による時刻取得について(先頭1文字に空白混入)
2004年08月11日(水) 18時27分
oo
>>年月日の取り出しはすべて右端から何文字目から何文字と指定

>右からN文字目からN文字指定はどのように記述すればいいのでしょうか?
>CMD /?を読んでみたのですが、よくわかりませんでした。(過去ログにも無さそうです・・・。)

>もし書式(それとも複数行での組み合わせ?)をご存じでしたらお教えいただけないでしょうか?

%DATE:~-10,4%%DATE:~-5,2%%DATE:~-2%
set /? に書いてあります。
あと、for if はもちろん、call goto exit setlocal あたりの /? は読んで置いたほうがいいです。ちなみにCMD.EXEの組み込みコマンドはこれだけあります。(HELPで表示されるコマンドのうちEXE/COMの無いもの)

ASSOC BREAK CALL CD CHDIR CLS COLOR COPY DATE DEL DIR ECHO ENDLOCAL ERASE EXIT FOR FTYPE GOTO IF MD MKDIR MOVE PATH PAUSE POPD PROMPT PUSHD RD REM REN RENAME RMDIR SET SETLOCAL SHIFT START TIME TITLE TYPE VER VERIFY VOL
731.
Re6:午前9:59までの%Time%による時刻取得について(先頭1文字に空白混入)
2004年08月16日(月) 12時49分
TOHRU
返事が遅くなりました。
おかげさまでバッチファイル作成がうまくいきました。
仕事の合間に少しずつでも覚えていこうと思います。
何度もレスいただきありがとうございました。
 
 


カテゴリー「DATE,TIME…日付、時刻の取得/利用」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


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

資料書籍

About

2004年08月11日 00:05に投稿されたエントリーのページです。

ひとつ前の投稿は「6桁の日付を使いたい」です。

次の投稿は「複数ファイル名の4桁年号を2桁にリネームしたい」です。

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

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート