どうも、カーブミラーです。
前回のこちら
【ChatGPT+Windowsバッチ】目標達成まで、時間が掛かる(悲) 最後に注意点あり。
は、少し煮込みが甘かったですかね?
今回は、最終的にできあがったものをお見せいたします。
でも、単なるBackupバッチですからね。
期待しないでくださいまし。
まずは、目標ですね。
年・月・日を取得して、
Backupディレクトリの下に、
"bk"+"yyyymmdd"ディレクトリ作成
そこにカレントディレクトリにある
テキストファイル(.txt)と
JavaScriptファイル(.js)をコピー
それで、ChatGPTに尋ねながら
最終的な状態になるまで、煮詰める。
煮詰まったら、まとめて編集して
最終的プロンプトにする。
以下は、その最終的プロンプトです。
次の流れで、Windowsのバッチファイルを作成してください。
1. 日付の表示形式を "yyyy/mm/dd" に一時的に変更する。
2. 日付の取得と加工:
- 日付を取得し、スラッシュを削除する。
- 先頭に "bk" を追加した修正された日付を作成する。
3. ディレクトリの作成:
- 修正された日付を名前とするディレクトリを作成する。
4. ファイルのコピー:
- 現在のディレクトリにあるテキストファイルを作成したディレクトリにコピーする。
- 現在のディレクトリにある JavaScript ファイルを作成したディレクトリにコピーする。
このプロンプトから
Backupバッチが生成されるので、
Backup.batにコピペして、
修整します。
修整したのは、
「日時を取得」のところで、
日本式にしたのに、
どうしても米国式で、
年月日を取得をしようとする部分だけ。
"yyyy/mm/dd"(日本式)なのに
"mm/dd/yyyy"(米国式)で取得
ここを日本式に、手直し。
それとBackupディレクトリに作ることを
盛り込んでいなかったので、
手で追加。
最終的なBackupバッチです。
REM バックアップバッチファイル
REM chatGPTが作成したものを少し修正
@echo off
REM 日付の表示形式を"yyyy/mm/dd"に一時的に変更する
setx DATEFMT "yyyy/MM/dd"
REM 日時を取得
for /F "tokens=1-3 delims=/" %%a in ('echo %date%') do (
set "year=%%a"
set "month=%%b"
set "day=%%c"
)
REM 日時からスラッシュを削除、先頭に"bk"を追加(Backupは自分で入れた)
set "date_without_slash=%year%%month%%day%"
set "modified_date=bk%date_without_slash%"
set "directory_name=Backup\%modified_date%"
REM ディレクトリ作成
mkdir "%directory_name%"
REM 日付の表示形式を戻す
setx DATEFMT ""
REM テキストファイルをコピー
copy *.txt %directory_name%
REM JavaScriptファイルをコピー
copy *.js %directory_name%
となりました。
ね、期待したほどではなかったでしょうw
自分でもこんなに時間を掛けるつもりは
なかったんですけどねぇ(悲)
でもでも
記事を書き終わって
気付いてしまったのです。
Google BardやBingでやれば、
もっと早く出来上がっただろう、と。
でも、それだとChatGPTを使う意味が
ないではありませんか!
いや、まぁ、そっちで記事を書けば、
それはそれで、あり、なんですけどね。
Bingは、中身GPT4なんですから。
ということで、
今回のお題はこれで終わりです。
いずれ、またやる……かも。