私はフォルダ名・ファイル名には必ず日付の6桁(YYMMDD)を付けている。ファイラーに時系列でソートされているため使いやすい。
このソフトはクリップボードにYYMMDDの6桁の数字を入れてくれる。タスクバーにピン留していて、後はぺするだけ。
改行を削除したのは、読んでもらうため。コードは素人丸出しです。
#include <iostream>
#include <filesystem>
#include <thread>
#include <chrono>
#include <Windows.h>
#include "shlobj_core.h"
inline BOOL SetClipboardText(const char* str) {int BufSize;char* Buf;HANDLE hMem;BufSize = strlen(str) + 1;hMem = GlobalAlloc(GMEM_SHARE | GMEM_MOVEABLE, BufSize);if (!hMem) {return false;}Buf = (char*)GlobalLock(hMem);if (Buf) {strcpy_s(Buf, 32, str);GlobalUnlock(hMem);if (OpenClipboard(NULL)) {EmptyClipboard();SetClipboardData(CF_TEXT, hMem);CloseClipboard();return true;}}return false;}inline std::string fcStrYYMMDD() {auto now = std::chrono::system_clock::now();auto t = std::chrono::system_clock::to_time_t(now); auto tm = *std::localtime(&t); std::ostringstream oss; oss << std::put_time(&tm, "%Y%m%d"); return oss.str().erase(0, 2); }inline void fcYYMMDD_Clipboard() { std::string str = fcStrYYMMDD(); const char* datetime = str.c_str(); if (!SetClipboardText(datetime)) { std::cout << "error!\n"; getchar(); } }inline void fcHolder_ClipboardCopy(std::string& strFN) {const char* path = strFN.c_str(); HGLOBAL hGlobal = GlobalAlloc(GHND, sizeof(DROPFILES) + strlen(path) + 2); if (!hGlobal) { return; }DROPFILES* dropfiles = (DROPFILES*)GlobalLock(hGlobal); if (!dropfiles) { GlobalFree(hGlobal); return; }dropfiles->pFiles = sizeof(DROPFILES); dropfiles->fNC = TRUE; dropfiles->fWide = FALSE; memcpy(&dropfiles[1], path, strlen(path)); GlobalUnlock(hGlobal); if (!OpenClipboard(NULL)) {GlobalFree(hGlobal);return;}if (!EmptyClipboard()) {GlobalFree(hGlobal);return;}if (!SetClipboardData(CF_HDROP, hGlobal)) {GlobalFree(hGlobal);return;}GlobalFree(hGlobal);CloseClipboard();return;}inline void fc_N_Minits(int& iN) {for (int i = iN; i >= 1; i--) {std::this_thread::sleep_for(std::chrono::seconds(1));std::cout << i << "秒";if (i != 1) { std::cout << "..."; }}std::cout << "\n\n";}inline void fcYYMMDD_Holder_Clipboard() {std::string strYYMMDD = fcStrYYMMDD();std::string strCrentPath = std::filesystem::current_path().string<char>();std::string strFN = strCrentPath + "\\" + strYYMMDD;std::filesystem::create_directory(strFN);fcHolder_ClipboardCopy(strFN);int iN = 10;std::cout <<"■■■ IronYYMMDD2 ■■■\n\n""YYMMDDフォルダサービスを開始しました。\n"<<iN<<"秒後にサービスを終了します。\n";fc_N_Minits(iN);std::filesystem::remove_all(strFN);iN = 5;std::cout <<"YYMMDDフォルダサービスを終了しました。\n""クリップボードからフォルダ貼り付けはできません。\n代わりにクリップボードにYYMMDDを挿入しました。"<< iN<< "秒後、自動的にプログラムを終了します。\n";fc_N_Minits(iN);fcYYMMDD_Clipboard();return;}int main() {if (GetAsyncKeyState(VK_SHIFT) != 0) {fcYYMMDD_Holder_Clipboard();}fcYYMMDD_Clipboard(); return 0;}