2022-01-24 18:10:56 +08:00
|
|
|
function __schtasks_print_tasks -d 'Helper function to print tasks'
|
2022-01-27 14:02:23 +08:00
|
|
|
schtasks /query /fo csv /nh | awk -F ',' '{ print $1 }'
|
2021-11-26 12:38:34 +08:00
|
|
|
end
|
|
|
|
|
2022-01-24 18:10:56 +08:00
|
|
|
function __schtasks_change_complete_args -a previous_token
|
2022-01-27 14:02:23 +08:00
|
|
|
if test "$previous_token" = /tn
|
|
|
|
__schtasks_print_tasks
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
if string match -r -q -- "$previous_token" '^/r?u$'
|
|
|
|
__fish_print_windows_users
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
if __fish_seen_argument -w s
|
|
|
|
echo -e '/u\tRun this command with the permissions of the specified user account'
|
|
|
|
end
|
|
|
|
|
|
|
|
if __fish_seen_argument -w u
|
|
|
|
echo -e '/p\tSpecify the password of the user account specified in the /u parameter'
|
|
|
|
end
|
|
|
|
|
|
|
|
if not __fish_seen_argument -w et -w du
|
|
|
|
echo -e '/et\tSpecify the end time for the task
|
2021-12-16 06:03:02 +08:00
|
|
|
/du\tA value that specifies the duration'
|
2022-01-27 14:02:23 +08:00
|
|
|
end
|
2021-11-26 12:38:34 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if not __fish_seen_argument -w ENABLE -w DISABLE
|
|
|
|
echo -e '/ENABLE\tSpecify to enable the scheduled task
|
2021-11-26 12:38:34 +08:00
|
|
|
/DISABLE\tSpecify to disable the scheduled task'
|
2022-01-27 14:02:23 +08:00
|
|
|
end
|
2021-11-26 12:38:34 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
echo -e '/tn\tIdentify the task to be changed
|
2021-11-26 12:38:34 +08:00
|
|
|
/s\tSpecify the name or IP address of a remote computer
|
|
|
|
/ru\tChange the user name under which the scheduled task has to run
|
|
|
|
/rp\tSpecify a new password for the existing user account, or the user account specified by /ru
|
|
|
|
/tr\tChange the program that the task runs
|
|
|
|
/st\tSpecify the start time for the task
|
|
|
|
/ri\tSpecify the repetition interval for the scheduled task
|
|
|
|
/k\tStop the program that the task runs at the time specified by /et or /du
|
|
|
|
/sd\tSpecify the first date on which the task should be run
|
|
|
|
/ed\tSpecify the last date on which the task should be run
|
|
|
|
/it\tSpecify to run the scheduled task only when the run as user is logged on to the computer
|
|
|
|
/z\tSpecify to delete the task upon the completion of its schedule
|
|
|
|
/?\tShow help'
|
|
|
|
end
|
|
|
|
|
2022-01-24 18:10:56 +08:00
|
|
|
function __schtasks_create_complete_args -a previous_token
|
2022-01-27 14:02:23 +08:00
|
|
|
if test "$previous_token" = /sc
|
|
|
|
echo -e 'MINUTE\tSpecify the number of minutes before the task should run
|
2021-11-26 12:38:34 +08:00
|
|
|
HOURLY\tSpecify the number of hours before the task should run
|
|
|
|
DAILY\tSpecify the number of days before the task should run
|
|
|
|
WEEKLY\tSpecify the number of weeks before the task should run
|
|
|
|
MONTHLY\tSpecify the number of months before the task should run
|
|
|
|
ONCE\tSpecify that that task runs once at a specified date and time
|
|
|
|
ONSTART\tSpecify that the task runs every time the system starts
|
|
|
|
ONLOGON\tSpecify that the task runs whenever a user logs on
|
|
|
|
ONIDLE\tSpecify that the task runs whenever the system is idle for a specified period of time'
|
2022-01-27 14:02:23 +08:00
|
|
|
return
|
|
|
|
end
|
2021-11-26 12:38:34 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if string match -r -q -- "$previous_token" '^/r?u$'
|
|
|
|
__fish_print_windows_users
|
|
|
|
return
|
|
|
|
end
|
2021-11-26 12:38:34 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if test "$previous_token" = /mo
|
|
|
|
echo -e 'MINUTE\tSpecify that the task runs every n minutes
|
2021-11-26 12:38:34 +08:00
|
|
|
HOURLY\tSpecify that the task runs every n hours
|
|
|
|
DAILY\tSpecify that the task runs every n days
|
|
|
|
WEEKLY\tSpecify that the task runs every n weeks
|
|
|
|
MONTHLY\tSpecify that the task runs every n months
|
|
|
|
ONCE\tSpecify that the task runs once
|
|
|
|
ONSTART\tSpecify that the task runs at startup
|
|
|
|
ONLOGON\tSpecify that the task runs when the user specified by the /u parameter logs on
|
|
|
|
ONIDLE\tSpecify that the task runs after the system is idle for the number of minutes specified by /i'
|
2022-01-27 14:02:23 +08:00
|
|
|
return
|
|
|
|
end
|
2021-11-26 12:38:34 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if __fish_seen_argument -w s
|
|
|
|
echo -e '/u\tRun this command with the permissions of the specified user account'
|
|
|
|
end
|
2021-11-26 17:19:29 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if __fish_seen_argument -w u
|
|
|
|
echo -e '/p\tSpecify the password of the user account specified in the /u parameter'
|
|
|
|
end
|
2021-11-26 17:19:29 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if not __fish_seen_argument -w et -w du
|
|
|
|
echo -e '/et\tSpecify the time of day that a minute or hourly task schedule ends
|
2021-11-26 12:38:34 +08:00
|
|
|
/du\tSpecify a maximum length of time for a minute or hourly schedule'
|
2022-01-27 14:02:23 +08:00
|
|
|
end
|
2021-11-26 12:38:34 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
echo -e '/sc\tSpecify the schedule type
|
2021-11-26 12:38:34 +08:00
|
|
|
/tn\tSpecify a name for the task
|
|
|
|
/tr\tSpecify the program or command that the task runs
|
|
|
|
/s\tSpecify the name or IP address of a remote computer
|
|
|
|
/ru\tRun the task with permissions of the specified user account
|
|
|
|
/rp\tSpecify a the password for the existing user account, or the user account specified by /ru
|
|
|
|
/mo\tSpecify how often the task runs within its schedule type
|
|
|
|
/d\tSpecify how often the task runs within its schedule type
|
|
|
|
/m\tSpecify a month or months of the year during which the scheduled task should run
|
|
|
|
/i\tSpecify how many minutes the computer is idle before the task starts
|
|
|
|
/st\tSpecify the start time for the task
|
|
|
|
/ri\tSpecify the repetition interval for the scheduled task
|
|
|
|
/k\tStop the program that the task runs at the time specified by /et or /du
|
|
|
|
/sd\tSpecify the date on which the task schedule starts
|
|
|
|
/ed\tSpecify the date on which the schedule ends
|
|
|
|
/it\tSpecify to run the scheduled task only when the run as user is logged on to the computer
|
|
|
|
/z\tSpecify to delete the task upon the completion of its schedule
|
|
|
|
/f\tSpecify to create the task and suppress warnings if the specified task already exists
|
|
|
|
/?\tShow help'
|
|
|
|
end
|
|
|
|
|
2022-01-24 18:10:56 +08:00
|
|
|
function __schtasks_delete_complete_args -a previous_token
|
2022-01-27 14:02:23 +08:00
|
|
|
if test "$previous_token" = /tn
|
|
|
|
__schtasks_print_tasks
|
|
|
|
return
|
|
|
|
end
|
2021-11-26 12:38:34 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if test "$previous_token" = /u
|
|
|
|
__fish_print_windows_users
|
|
|
|
return
|
|
|
|
end
|
2021-11-26 12:38:34 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if __fish_seen_argument -w s
|
|
|
|
echo -e '/u\tRun this command with the permissions of the specified user account'
|
|
|
|
end
|
2021-11-26 17:19:29 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if __fish_seen_argument -w u
|
|
|
|
echo -e '/p\tSpecify the password of the user account specified in the /u parameter'
|
|
|
|
end
|
2021-11-26 17:19:29 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
echo -e '/tn\tIdentify the task to be deleted
|
2021-11-26 12:38:34 +08:00
|
|
|
/f\tSuppress the confirmation message
|
|
|
|
/s\tSpecify the name or IP address of a remote computer
|
|
|
|
/?\tShow help'
|
|
|
|
end
|
|
|
|
|
2022-01-24 18:10:56 +08:00
|
|
|
function __schtasks_end_complete_args -a previous_token
|
2022-01-27 14:02:23 +08:00
|
|
|
if test "$previous_token" = /tn
|
|
|
|
__schtasks_print_tasks
|
|
|
|
return
|
|
|
|
end
|
2021-11-26 12:38:34 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if test "$previous_token" = /u
|
|
|
|
__fish_print_windows_users
|
|
|
|
return
|
|
|
|
end
|
2021-11-26 12:38:34 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if __fish_seen_argument -w s
|
|
|
|
echo -e '/u\tRun this command with the permissions of the specified user account'
|
|
|
|
end
|
2021-11-26 17:19:29 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if __fish_seen_argument -w u
|
|
|
|
echo -e '/p\tSpecify the password of the user account specified in the /u parameter'
|
|
|
|
end
|
2021-11-26 17:19:29 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
echo -e '/tn\tIdentify the task that started the program
|
2021-11-26 12:38:34 +08:00
|
|
|
/s\tSpecify the name or IP address of a remote computer
|
|
|
|
/?\tShow help'
|
|
|
|
end
|
|
|
|
|
2022-01-24 18:10:56 +08:00
|
|
|
function __schtasks_query_complete_args -a previous_token
|
2022-01-27 14:02:23 +08:00
|
|
|
if test "$previous_token" = /fo
|
|
|
|
echo -e 'TABLE
|
2021-11-26 12:38:34 +08:00
|
|
|
LIST
|
|
|
|
CSV'
|
2022-01-27 14:02:23 +08:00
|
|
|
return
|
|
|
|
end
|
2021-11-26 12:38:34 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if test "$previous_token" = /u
|
|
|
|
__fish_print_windows_users
|
|
|
|
return
|
|
|
|
end
|
2021-11-26 12:38:34 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if __fish_seen_argument -w s
|
|
|
|
echo -e '/u\tRun this command with the permissions of the specified user account'
|
|
|
|
end
|
2021-11-26 17:19:29 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if __fish_seen_argument -w u
|
|
|
|
echo -e '/p\tSpecify the password of the user account specified in the /u parameter'
|
|
|
|
end
|
2021-11-26 17:19:29 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
echo -e '/fo\tSpecify the output format
|
2021-12-16 06:03:02 +08:00
|
|
|
/nh\tRemove column headings
|
|
|
|
/v\tAdd the advanced properties of the task
|
2021-11-26 12:38:34 +08:00
|
|
|
/s\tSpecify the name or IP address of a remote computer
|
|
|
|
/?\tShow help'
|
|
|
|
end
|
|
|
|
|
2022-01-24 18:10:56 +08:00
|
|
|
function __schtasks_run_complete_args -a previous_token
|
2022-01-27 14:02:23 +08:00
|
|
|
if test "$previous_token" = /tn
|
|
|
|
__schtasks_print_tasks
|
|
|
|
return
|
|
|
|
end
|
2021-11-26 12:38:34 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if test "$previous_token" = /u
|
|
|
|
__fish_print_windows_users
|
|
|
|
return
|
|
|
|
end
|
2021-11-26 12:38:34 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if __fish_seen_argument -w s
|
|
|
|
echo -e '/u\tRun this command with the permissions of the specified user account'
|
|
|
|
end
|
2021-11-26 17:19:29 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
if __fish_seen_argument -w u
|
|
|
|
echo -e '/p\tSpecify the password of the user account specified in the /u parameter'
|
|
|
|
end
|
2021-11-26 17:19:29 +08:00
|
|
|
|
2022-01-27 14:02:23 +08:00
|
|
|
echo -e '/tn\tIdentify the task to start
|
2021-11-26 12:38:34 +08:00
|
|
|
/s\tSpecify the name or IP address of a remote computer
|
|
|
|
/?\tShow help'
|
|
|
|
end
|
|
|
|
|
2022-01-24 18:10:56 +08:00
|
|
|
function __schtasks_complete_args -d 'Function to generate args'
|
2024-01-22 14:42:45 +08:00
|
|
|
set --local previous_token (commandline -xc)[-1]
|
2022-01-27 14:02:23 +08:00
|
|
|
|
|
|
|
if __fish_seen_argument -w change
|
|
|
|
__schtasks_change_complete_args "$previous_token"
|
|
|
|
else if __fish_seen_argument -w create
|
|
|
|
__schtasks_create_complete_args "$previous_token"
|
|
|
|
else if __fish_seen_argument -w delete
|
|
|
|
__schtasks_delete_complete_args "$previous_token"
|
|
|
|
else if __fish_seen_argument -w end
|
|
|
|
__schtasks_end_complete_args "$previous_token"
|
|
|
|
else if __fish_seen_argument -w query
|
|
|
|
__schtasks_query_complete_args "$previous_token"
|
|
|
|
else if __fish_seen_argument -w run
|
|
|
|
__schtasks_run_complete_args "$previous_token"
|
|
|
|
end
|
2021-11-26 12:38:34 +08:00
|
|
|
end
|
|
|
|
|
2022-01-24 18:10:56 +08:00
|
|
|
complete -c schtasks -f -a '(__schtasks_complete_args)'
|
2022-01-24 18:43:28 +08:00
|
|
|
|
|
|
|
complete -c schtasks -f -n 'not __fish_seen_argument -w change -w create -w delete -w end \
|
|
|
|
-w query -w run' -a /change \
|
|
|
|
-d 'Change one or more properties of a task'
|
|
|
|
complete -c schtasks -f -n 'not __fish_seen_argument -w change -w create -w delete -w end \
|
|
|
|
-w query -w run' -a /create \
|
|
|
|
-d 'Schedule a new task'
|
|
|
|
complete -c schtasks -f -n 'not __fish_seen_argument -w change -w create -w delete -w end \
|
|
|
|
-w query -w run' -a /delete \
|
|
|
|
-d 'Delete a scheduled task'
|
|
|
|
complete -c schtasks -f -n 'not __fish_seen_argument -w change -w create -w delete -w end \
|
|
|
|
-w query -w run' -a /end \
|
|
|
|
-d 'Stop a program started by a task'
|
|
|
|
complete -c schtasks -f -n 'not __fish_seen_argument -w change -w create -w delete -w end \
|
|
|
|
-w query -w run' -a /query \
|
|
|
|
-d 'Display tasks scheduled to run on the computer'
|
|
|
|
complete -c schtasks -f -n 'not __fish_seen_argument -w change -w create -w delete -w end \
|
|
|
|
-w query -w run' -a /run \
|
|
|
|
-d 'Start a scheduled task immediately'
|