Hello,
In a previous blog post, I showed you how to write a polyglot Batch file that is both a Batch script and a C++ source file. When the Batch file is executed, it compiles itself (as C++). In this blog post I am going to show you how to write a Batch file script that polls the file system periodically to see if a given input file is changed and if so, it will invoke the compiler or interpreter of your choice.
This concept is similar to what the Compiler Explorer does actually.
I am going to write a small script that keeps running your Python script automatically in a separate console window the moment you save the script in your editor. Check the script in action:
The basic idea:
- Set the variable last_fdate containing the last file modification date to an un-initialized value
- Query the file modification date/time and store its value in the fdate variable
- If last_fdate is different than the current file date then invoke the interpreter
- Normally, this condition will always execute on the first run of the auto compiler script
- Unless the input file is modified, there will be no interpreter invocations
This is the full script source code:
@echo off :: :: The Batchography book by Elias Bachaalany :: :: Auto interpret Python scripts :: :main setlocal if "%1"=="" goto :help if not exist "%1" ( echo Input file '%1' not found goto :eof ) set FN=%1 set last_fdate=x title Batchography - Python auto re-interpreting '%FN%' :repeat :: Get the file date/time, size and attributes for %%a in (%FN%) do set fdate=%%~ta.%%~za.%%~aa :: Different attributes found? if not "%last_fdate%"=="%fdate%" ( cls :: Re-interpret call python "%FN%" ) :: Remember the new date/time set last_fdate=%fdate% :: Wait for a second before checking for the file modification again CHOICE /T 1 /C "yq" /D y > nul :: User pressed Q? just quit if "%errorlevel%" neq "1" goto :eof :: Repeat until user quits or Ctrl-C goto repeat :help echo Auto Python reinterpreter takes the input file name to autocompile as an argument goto :eof
You can also download the full script from the Batchography’s book online source repository:
To learn more advanced Batch scripting techniques, make sure you grab your copy of the Batchography book.
You might also like: