mirror of
https://github.com/github/awesome-copilot.git
synced 2026-04-30 12:15:56 +00:00
* new skill batch-files * batch-files: codespell, re-run start, suggestions, txt assets codespellrc: add FO for tasklist option validate-readme: re-run npm start apply suggestions from code review batch-files: change asset templates to text files * codespellrc: resolve spelling in comment
178 lines
5.8 KiB
Plaintext
178 lines
5.8 KiB
Plaintext
@echo off
|
|
REM myTask
|
|
:: An automation script for scheduled or manual task execution.
|
|
::
|
|
:: usage: myTask [options]
|
|
:: [1] = task target or configuration value (optional)
|
|
::
|
|
:: options:
|
|
:: /? Show this help message
|
|
:: -h Show this help message
|
|
:: --help Show this help message
|
|
:: --dry Dry-run mode (preview actions without executing)
|
|
::
|
|
:: examples:
|
|
:: > myTask
|
|
:: - Run the default task.
|
|
:: > myTask --dry
|
|
:: - Preview what the task would do without making changes.
|
|
:: > myTask "C:\data\reports"
|
|
:: - Run the task against a specific target directory.
|
|
::
|
|
set "_helpLinesMyTask=20"
|
|
|
|
:: ========================================================================
|
|
:: TEMPLATE INSTRUCTIONS
|
|
:: 1. Find/Replace "myTask" with your task name (camelCase).
|
|
:: 2. Find/Replace "MyTask" with your task name (PascalCase).
|
|
:: 3. Update the help block above (lines 2-20) for your task.
|
|
:: 4. Implement your logic in :_runMyTask.
|
|
:: 5. Add any new variables to :_removeBatchVariablesMyTask.
|
|
:: ========================================================================
|
|
|
|
:: Config variables.
|
|
set "_dryRunMyTask=0"
|
|
set "_logFileMyTask=%TEMP%\%~n0.log"
|
|
|
|
:: Define paths.
|
|
set "_scriptDirMyTask=%~dp0"
|
|
set "_scriptNameMyTask=%~n0"
|
|
|
|
:: Parse arguments into variables.
|
|
set "_parOneMyTask=%~1"
|
|
set "_checkParOneMyTask=-%_parOneMyTask%-"
|
|
set "_parTwoMyTask=%~2"
|
|
set "_checkParTwoMyTask=-%_parTwoMyTask%-"
|
|
|
|
:: -----------------------------------------------------------------------
|
|
:: Handle help flag.
|
|
:: -----------------------------------------------------------------------
|
|
if "%_parOneMyTask%"=="/?" call :_showHelpMyTask & goto _removeBatchVariablesMyTask
|
|
if /i "%_parOneMyTask%"=="-h" call :_showHelpMyTask & goto _removeBatchVariablesMyTask
|
|
if /i "%_parOneMyTask%"=="--help" call :_showHelpMyTask & goto _removeBatchVariablesMyTask
|
|
|
|
:: -----------------------------------------------------------------------
|
|
:: Handle --dry flag (shift arguments if present).
|
|
:: -----------------------------------------------------------------------
|
|
if /i "%_parOneMyTask%"=="--dry" (
|
|
set "_dryRunMyTask=1"
|
|
set "_parOneMyTask=%~2"
|
|
set "_checkParOneMyTask=-%~2-"
|
|
)
|
|
|
|
:: Store current directory to return to after task completes.
|
|
set "_savedDirMyTask=%CD%"
|
|
|
|
:: Create temp directory for intermediate files.
|
|
call :_makeTempDirMyTask
|
|
|
|
:: -----------------------------------------------------------------------
|
|
:: Log start and begin execution.
|
|
:: -----------------------------------------------------------------------
|
|
call :_logMyTask "=========================================="
|
|
call :_logMyTask "Task started: %_scriptNameMyTask%"
|
|
call :_logMyTask "=========================================="
|
|
|
|
call :_runMyTask
|
|
|
|
call :_logMyTask "Task finished: %_scriptNameMyTask%"
|
|
goto _removeBatchVariablesMyTask
|
|
|
|
:: ========================================================================
|
|
:: MAIN LOGIC
|
|
:: ========================================================================
|
|
|
|
:_runMyTask
|
|
REM ===================================================================
|
|
REM TODO: Replace this section with your task logic.
|
|
REM ===================================================================
|
|
|
|
if "%_dryRunMyTask%"=="1" (
|
|
call :_logMyTask "[DRY RUN] Would process target: %_parOneMyTask%"
|
|
goto :eof
|
|
)
|
|
|
|
REM Example: Process files in a target directory.
|
|
if NOT "%_checkParOneMyTask%"=="--" (
|
|
if NOT EXIST "%_parOneMyTask%" (
|
|
call :_logMyTask "ERROR: Target not found: %_parOneMyTask%"
|
|
goto :eof
|
|
)
|
|
call :_logMyTask "Processing target: %_parOneMyTask%"
|
|
REM Add task operations here.
|
|
) else (
|
|
call :_logMyTask "Running default task (no target specified)."
|
|
REM Add default task operations here.
|
|
)
|
|
|
|
call :_logMyTask "Task operations complete."
|
|
goto :eof
|
|
|
|
:: ========================================================================
|
|
:: SUPPORT FUNCTIONS
|
|
:: ========================================================================
|
|
|
|
:_logMyTask
|
|
REM Write a timestamped message to both console and log file.
|
|
setlocal EnableDelayedExpansion
|
|
for /f "tokens=2 delims==" %%a in ('wmic os get localdatetime /value') do (
|
|
set "_dtMyTask=%%a"
|
|
)
|
|
set "_tsMyTask=!_dtMyTask:~0,4!-!_dtMyTask:~4,2!-!_dtMyTask:~6,2! !_dtMyTask:~8,2!:!_dtMyTask:~10,2!:!_dtMyTask:~12,2!"
|
|
echo [!_tsMyTask!] %~1
|
|
echo [!_tsMyTask!] %~1 >>"%_logFileMyTask%"
|
|
endlocal
|
|
goto :eof
|
|
|
|
:_showHelpMyTask
|
|
echo:
|
|
for /f "skip=1 tokens=* delims=" %%a in ('findstr /n "^" "%~f0"') do (
|
|
set "_line=%%a"
|
|
setlocal EnableDelayedExpansion
|
|
set "_lineNum=!_line:~0,2!"
|
|
if !_lineNum! GTR %_helpLinesMyTask% (
|
|
endlocal
|
|
goto :eof
|
|
)
|
|
set "_text=!_line:*:=!"
|
|
if defined _text (
|
|
echo !_text:~4!
|
|
) else (
|
|
echo:
|
|
)
|
|
endlocal
|
|
)
|
|
goto :eof
|
|
|
|
:_makeTempDirMyTask
|
|
set "_tmpDirMyTask=%TEMP%\%~n0"
|
|
if NOT EXIST "%_tmpDirMyTask%" (
|
|
mkdir "%_tmpDirMyTask%" >nul 2>nul
|
|
)
|
|
goto :eof
|
|
|
|
:: ========================================================================
|
|
:: CLEANUP - Remove all batch variables and restore directory.
|
|
:: ========================================================================
|
|
:_removeBatchVariablesMyTask
|
|
set _helpLinesMyTask=
|
|
set _dryRunMyTask=
|
|
set _logFileMyTask=
|
|
set _scriptDirMyTask=
|
|
set _scriptNameMyTask=
|
|
set _parOneMyTask=
|
|
set _checkParOneMyTask=
|
|
set _parTwoMyTask=
|
|
set _checkParTwoMyTask=
|
|
REM Append new variables above this line.
|
|
|
|
if EXIST "%_tmpDirMyTask%" rmdir /S /Q "%_tmpDirMyTask%" >nul 2>nul
|
|
set _tmpDirMyTask=
|
|
|
|
REM Restore original directory.
|
|
if DEFINED _savedDirMyTask (
|
|
cd /D "%_savedDirMyTask%"
|
|
set _savedDirMyTask=
|
|
)
|
|
exit /b
|