A Python Tkinter application to run multiple batch files simultaneously, monitor their output, uptime, and status, and manage them dynamically.
- Run multiple batch files at the same time
- Monitor live output for each batch file in a dedicated console window
- Track uptime and process status (
Running,Finished,Error) - Close or renew running batch processes
- Extract readable batch titles automatically
- Lightweight and standalone GUI application
- Clean, intuitive interface for batch process management
- Python 3.8+
- Tkinter (usually included with Python)
- Windows (for
taskkillfunctionality; works on Unix with minor tweaks)
- Clone this repository:
git clone https://github.com/yourusername/cea-batch-manager.git
cd cea-batch-manager- Install dependencies (if needed):
pip install --upgrade pip
# Tkinter usually comes pre-installed with Python
# If not available, on Ubuntu/Debian: sudo apt-get install python3-tk- Run the application:
python batch_manager.py- Install PyInstaller:
pip install pyinstaller- Compile to a single executable:
pyinstaller --onefile --windowed --icon=cea-Logo.ico --name="CEA Batch Manager" batch_manager.py- The executable will be created in the
dist/directory
-
With console (for debugging):
pyinstaller --onefile --icon=cea-Logo.ico --name="CEA Batch Manager" batch_manager.py -
Create directory instead of single file:
pyinstaller --windowed --icon=cea-Logo.ico --name="CEA Batch Manager" batch_manager.py
-
Install the GUI tool:
pip install auto-py-to-exe
-
Launch the GUI:
auto-py-to-exe
-
Configure settings:
- Script:
batch_manager.py - Onefile: ✅
- Window Based: ✅
- Icon:
cea-Logo.ico - Name:
CEA Batch Manager
- Script:
- Open and Run Batch File: Click the "Open and Run Batch File" button to select and execute a batch file
- Monitor Output: Each batch file gets its own output window showing real-time logs
- Track Status: View the current status (Running, Finished, Error) and uptime for each process
- Close Selected Batch: Select a running batch and click "Close Selected Batch" to terminate it
- Renew All Running: Restart all currently running batch files with a single click
- Top Bar: Main control buttons for managing batch files
- Upper Panel: List of all batch files with their status and metadata
- Lower Panel: Detailed output console for the selected batch file
cea-batch-manager/
├── batch_manager.py # Main application code
├── cea-Logo.ico # Application icon
├── elevated.manifest.xml # Windows manifest for UAC
├── README.md # This documentation
└── .gitignore # Git ignore rules
- BatchRunnerApp: Main Tkinter application class
- Process Management: Handles starting, monitoring, and stopping batch processes
- Threading: Uses separate threads for each batch process to prevent UI freezing
- Output Monitoring: Real-time capture and display of batch file output
open_and_run(): File dialog to select and execute batch filesclose_selected_batch(): Terminate specific batch processesrenew_all_running(): Restart all active batch processesmonitor_process(): Thread function to monitor process output and status
- Icon not loading: Ensure
cea-Logo.icois in the same directory as the executable - Permission errors: Run as administrator if batch files require elevated privileges
- Batch file not found: Use absolute paths or ensure batch files are accessible
To run with console output for debugging:
python batch_manager.py
# Or compile without --windowed flag
pyinstaller --onefile --icon=cea-Logo.ico batch_manager.pyFor professional distribution, consider creating an installer:
-
Using Inno Setup (Windows):
- Download and install Inno Setup
- Create a script to package the executable and dependencies
- Generate a professional installer
-
Using NSIS (Alternative):
- Install NSIS
- Create installation script
- Build installer package
Update version information in the executable by modifying the PyInstaller command or using version files.
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
[Add your license information here]
For issues and questions:
- Create an issue on GitHub
- Check the troubleshooting section above
- Review the code comments for additional context