I use this a few dozen times per week. Super useful. Place in your %WINDIR% directory as f.bat
and call via Win+R.
REM /** REM * Create datestamped filename via run dialog REM * Location: %WINDIR%/f.bat REM * REM * Usage: [Win+R] > 'call notes from emily about project scope' REM * Output: 2017-11-14_call-notes-from-emily-about-project-scope REM * Caveats: No real string sanitization, so special chars like "&" will break it. REM */ @echo off @setlocal enabledelayedexpansion REM *** Convert everything to lowercase REM @source https://stackoverflow.com/a/23806517 set _STRING=%* set "_UCASE=ABCDEFGHIJKLMNOPQRSTUVWXYZ" set "_LCASE=abcdefghijklmnopqrstuvwxyz" for /l %%a in (0,1,25) do ( call set "_FROM=%%_UCASE:~%%a,1%% call set "_TO=%%_LCASE:~%%a,1%% call set "_STRING=%%_STRING:!_FROM!=!_TO!%% ) REM *** Get system date REM *** @source https://stackoverflow.com/a/3202796 @setlocal enableextensions if "%date%A" LSS "A" (set toks=1-3) else (set toks=2-4) for /f "tokens=2-4 delims=(-)" %%a in ('echo:^|date') do ( for /f "tokens=%toks% delims=.-/ " %%i in ('date/t') do ( set '%%a'=%%i set '%%b'=%%j set '%%c'=%%k)) if %'yy'% LSS 100 set 'yy'=20%'yy'% set Today=%'yy'%-%'mm'%-%'dd'% ENDLOCAL & SET v_year=%'yy'%& SET v_month=%'mm'%& SET v_day=%'dd'% set _DATE=%V_Year%-%V_Month%-%V_Day% REM *** Replace spaces with underscores SET _STRING=%_STRING: =_% REM *** beep at the user! REM *** @source https://stackoverflow.com/a/39541079 rundll32 user32.dll,MessageBeep REM *** Fire the prompt() mshta javascript:prompt("Filename generated successfully!","%_DATE%_%_STRING%");close();