Solution 1:

You may use powercfg in a script to change the time the PC waits until it goes to sleep:

Never go to standby:

powercfg -change -standby-timeout-ac 0

Go to standby in 15 minutes:

powercfg -change -standby-timeout-ac 15

Solution 2:

Here's a bash script that I whipped up based on harrymc's response.

#!/usr/bin/bash

# NAME
#   nosleep - prevent sleep and hibernation while running a command
#
# SYNOPSIS
#   nosleep COMMAND [ARG]...

# Make sure the power scheme gets restored, even if Ctrl-C happens
cleanup()
{
  powercfg -setactive $SCHEME_GUID
  powercfg -delete    $TMP_GUID
  return $?
}
trap cleanup SIGINT

# Disable sleep and hibernate timers
export SCHEME_GUID=`powercfg -getactivescheme | gawk '{ print $4 }'`
export TMP_GUID=`powercfg -duplicatescheme $SCHEME_GUID | gawk '{ print $4 }'`
if [[ -z $TMP_GUID ]]; then
    echo "ERROR: could not duplicate the current power scheme"
    exit 254
fi
powercfg -setactive $TMP_GUID
powercfg -changename $TMP_GUID nosleep "temporary scheme for disabling sleep and hibernation"
powercfg -change -standby-timeout-ac 0
powercfg -change -hibernate-timeout-ac 0

# Run the command
"$@"

powercfg -setactive $SCHEME_GUID
powercfg -delete    $TMP_GUID

Solution 3:

There is now such a nosleep command in Cygwin. Just install the nosleep package and run as

nosleep myscript.sh

Written by Andrew E. Schulman in 2011. See https://cygwin.com/ml/cygwin/2011-09/msg00151.html

The source on Launchpad. It uses SetThreadExecutionState() (like Insomnia already mentioned), doesn't create a separate power scheme.

Usage: nosleep [OPTION...] command [args]
Run a command while inhibiting computer sleep or hibernation.

  -a, --awaymode             Force away mode instead of sleep mode
  -d, --display              Keep the display on
  -i, --ifacpower            Following options only apply if AC power is on
  -?, --help                 give this help list
  --usage                give a short usage message
  -V, --version              print program version

Report bugs to the Cygwin mailing list <[email protected]>.

Note that it prevents the system from automatically going to sleep on idle, not the system from going to sleep if requested by a user (like when closing a laptop lid).

Solution 4:

Insomnia prevent your windows to go to sleep but it's not a command line tools, so your script with the harrymc commands are better solutions

Solution 5:

Suggestion from this answer by @LorenzCK on a related question:

Use Presenting Mode from Windows Mobility Center (if available)

%WINDIR%\System32\PresentationSettings.exe "/start"

Check with powercfg -requests in the command prompt. Should output:

DISPLAY:
[PROCESS] \Device\HarddiskVolume2\Windows\System32\PresentationSettings.exe
SYSTEM:
[PROCESS] \Device\HarddiskVolume2\Windows\System32\PresentationSettings.exe

Upside is it gets cleared on shutdown or restart. Now you don't have to worry about storing and restoring the original power settings 👍

It also prevents monitors going to sleep but you can make that happen with a command in your script. Simple but third-party solutions: NirCmd nircmd monitor off or AutoHotkey SendMessage, 0x112, 0xF170, 2,, Program Manager The built-in powercfg /requestsoverride process PresentationSettings.exe display will not work though.