6

Is it possible, by a registry hack or other method, to change the way Windows 10 names my screenshot taken and saved with Windows + Print Screen?

Currently my screenshots in C:\Users\[Username]\Pictures\Screenshots are named Screenshot.png, Screenshot (1).png, Screenshot (2).png and so on.

I would like them to be named yyyy-mm-dd_hh.mm.ss.png or similar, just like Minecraft (yes, Minecraft :) ) screenshots. For example: 2016-07-21_12.28.05.png.

I find this naming scheme much better, since it allows me to delete screenshots without messing up the file names. It also gives a clear overview of when a screenshot was taken.

< EDIT >
I fiddled around with the solution dezlov suggested. It took quite a while for me before I finally got it working. It's not the ideal solution I was hoping for, though, but at least it does the job. I now have a batch file in my screenshots folder, that I can run manually when I open the folder. A scheduled task would not be able to have the screenshots renamed when I want them to be (preferably before I even open the screenshots folder), unfortunately.
I played around with making so that a new file in the screenshots folder acts like a trigger for that task you suggested, but that didn't seem possible. Neither can I make Windows + Print Screen a shortcut key for a shortcut file to the .bat file. (Confusing, I know, but I need a shortcut to the .bat file to be able to assign a keyboard combination that triggers that shortcut.) The only possible options I seem to have is CTRL + ALT + [x]. No shift, no Print Screen key, nothing else. Any suggestions for how to make Windows + Print Screen run the .bat file?
< / EDIT >

3
  • 1
    Didn't find any duplicates here, and Google searches didn't yield any answers. Everything is about the location of which screenshots are saved, and this site suggests there is a registry key to keep track of the naming. Without much knowledge about how Windows works, I'd imagine there is a way to, via some script or added registry keys, detect the current system time and put that into the file name. I'd love if it could work just like this.
    – Hidoo
    Jul 27, 2016 at 21:31
  • I don't think it is possible. However there are plenty of other screen capture programs that do exactly what you want. screenshotcaptor is one such example. See i.imgur.com/tMdVops.png
    – DavidPostill
    Jul 28, 2016 at 8:53
  • @EmilGrizell It is possible to write software that intercepts Print Screen key, captures the desktop screenshot and saves it according to your needs, essentially replicating the native handling and replacing it. Try some screenshot capturing software, maybe there is a tool that already does that.
    – dezlov
    Aug 23, 2016 at 22:28

4 Answers 4

2

The idea is to setup a batch renaming program to automatically rename all those screenshots to your desired pattern using the last modified file time. This can be setup so that it can be ran either on demand, or periodically via scheduled tasks.

This can be accomplished with ReNamer.

  1. Open ReNamer
  2. Add an Insert renaming rule with the following configuration:
    • Insert ":File_DateModified:" replacing current name (skip extension)
  3. Open Settings in the main menu, Meta Tags tab, change the date format to:
    • yyyy-mm-dd_hh.nn.ss.zzz
  4. Save the current rules configuration as a Preset
    • Click Ctrl+S or by navigating through the main menu.

Now, you can use your saved preset to automatically rename files by using a command line:

"C:\Programs\ReNamer\ReNamer.exe" /rename "My Preset Name" "C:\Users\Username\Screenshots"

(Exact paths and preset name will need to be adjusted to fit your setup)

This command opens ReNamer with the selected preset, loads all files from the specified folder, renames all files and closes automatically if no issues have occurred. You can either create a shortcut for executing it on demand or adding it as a Scheduled Task to be executed periodically.

That is how it looks if you just load your files into ReNamer for inspection:

ReNamer - serializing file names with last modified date

0
2

I use Dropbox and it has a save to Dropbox feature. When it does it used a time date naming convention. After that I just move files to another folder. Also the function is ctrl+prtsc for Dropbox save rather than win+prtsc.

2
  • 1
    Welcome to Super User! On this Q&A site we try to provide good answers to questions people ask. Part of providing a good answer is making sure you fully read the question and understand what's being asked. In this case, the question was about a way to change the default screenshot behavior in Windows. OP never mentioned wanting to use another program (like Dropbox) to take over the screenshot capturing for them.
    – Cas
    Nov 7, 2016 at 10:23
  • 2
    @cascer1 and DavidPostill You both provide good and polite feedback to ABC123's answer, although in this case, I feel that ABC123 provided a useful alternative that could help some people that have this question!
    – Hidoo
    Nov 8, 2016 at 21:46
0

This answer probably is 7 years late, but just in case if someone needs...

In Windows 11 (have not checked Windows 10) there are two ways to capture screenshots:

  1. Using Windows key + prtsc - will capture the screenshot automatically and save it as 'screenshot (x)'.png where x refers to number of screenshots taken that day
  2. Using just prtsc key - this will open the snipping tool window allowing to select a region, window, or whole screen for capture. Files are saved as 'screenshot date time.png' format.
0

Use AutoHotkey [1] script to rename screenshots.

#Requires AutoHotkey v2.0

#PrintScreen::PrintScreenFn

;--------

PrintScreenFn(*) {
; save screenshot number in variable 'serial'
serial := RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer", "ScreenshotIndex", "1")

; send Windows + Print Screen
Send "#{PrintScreen}"

; use SetTimer to wait for file creation 100ms and execute action in another thread
; pass serial as number for further action
SetTimer(() => PrintScreenExec(serial), -100)
}

;--------

PrintScreenExec(number) {

; store path of screenshot file in variable 'MyPath'
MyPath := "C:\Users\" A_UserName "\Pictures\Screenshots\Screenshot (" number ").png"

; if file does not exist, wait using Sleep and repeat check
While FileExist(MyPath) = "" {
    Sleep 500        ; wait for 500ms - modify as per system performance
    If A_Index > 6 { ; max 6 attempts, total wait 3000ms = 3s
        ; If failed ×6, open screenshot folder in explorer
        Run 'explore "C:\Users\' A_UserName '\Pictures\Screenshots\"',,"Max"
        Exit         ; give up on rename
        }
    }

; prepare to rename file
String := FormatTime(FileGetTime(MyPath, "C"), "yyyy-MM-dd @ HH:mm:ss") ; 2016-07-21 @ 13:28:05
; FileGetTime - obtain creation time as a string in YYYYMMDDHH24MISS format
; FormatTime - transform Timestamp YYYYMMDDHH24MISS into desired date/time format.
MyPathNew := "C:\Users\" A_UserName "\Pictures\Screenshots\" String ".png"

; rename
FileMove MyPath, MyPathNew

; Further actions -
; Run 'mspaint.exe "' MyPathNew '"',,"Max"                              ; open in paint
; Run 'explore "C:\Users\' A_UserName '\Pictures\Screenshots\"',,"Max"  ; open screenshot folder in explorer
}

[1]: AutoHotkey is a free, open source macro-creation and automation software utility.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .