@echo off title New-SubredditHTMLArchive 2.3 setup echo This batch script completes all initial setup steps for the New-SubredditHTMLArchive echo PowerShell script, with a right click and then a 'Run as administrator' click. echo You do not need to be present during installation, which takes a few minutes. echo. REM ## Init / Check Admin SET localPolicy=FALSE SET changePolicy=FALSE SET installNow=FALSE SET isAdmin=TRUE net.exe session 1>NUL 2>NUL || ( @SET isAdmin=FALSE ) IF %isAdmin%==FALSE ( echo You MUST RIGHT CLICK this script and "Run as administrator".. Try again. Exiting. GOTO:END ) REM ## Get-ExecutionPolicy echo Checking PowerShell Execution Policy ... reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" /v ExecutionPolicy 1>NUL 2>NUL IF NOT ERRORLEVEL 0 ( @SET changePolicy=TRUE ) ELSE ( FOR /f "skip=2 tokens=2*" %%a IN ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" /v ExecutionPolicy') DO @SET "localPolicy=%%b" IF %localPolicy%==Restricted ( @SET changePolicy=TRUE ) IF %localPolicy%==AllSigned ( @SET changePolicy=TRUE ) IF %localPolicy%==RemoteSigned ( @SET changePolicy=TRUE ) IF %localPolicy%==Default ( @SET changePolicy=TRUE ) IF %localPolicy%==Undefined ( @SET changePolicy=TRUE ) IF "%localPolicy%"=="" ( @SET changePolicy=TRUE ) ) REM ## Set-ExecutionPolicy IF %changePolicy%==TRUE ( echo Setting PowerShell Execution Policy ... reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell /v "ExecutionPolicy" /d "Unrestricted" /f IF ERRORLEVEL 1 ( echo Error: Unable to set PowerShell execution policy. Exiting. GOTO:END ) ) REM ## Set-ItemProperty IF %changePolicy%==TRUE ( echo Setting LongPathsEnabled as MAX_PATH long post title workaround ... REM https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem /v "LongPathsEnabled" /t REG_DWORD /d "1" /f IF ERRORLEVEL 1 ( echo Error: Unable to set LongPathsEnabled as MAX_PATH workaround. Exiting. GOTO:END ) ) REM ## Check prerequisites SET requiredPythonModules=bdfr bdfrtohtml click markdown appdirs bs4 dict2xml ffmpeg-python praw pyyaml requests youtube-dl jinja2 pillow echo Checking if required tools and packages are installed ... where /q pip IF ERRORLEVEL 1 ( SET installNow=TRUE ) IF %installNow%==FALSE ( FOR %%a IN (%requiredPythonModules%) DO ( pip show %%a -q -q -q IF "%ERRORLEVEL%"=="1" ( echo Missing Python module: %%a SET installNow=TRUE ) ) ) REM ## Invoke-WebRequest SET localDownloadPath=%HOMEDRIVE%\Users\%USERNAME%\Documents\New-SubredditHTMLArchive IF %installNow%==TRUE ( IF NOT EXIST %localDownloadPath%\New-SubredditHTMLArchive.ps1 ( echo Downloading New-SubredditHTMLArchive script to Documents folder ... IF NOT EXIST %localDownloadPath% ( mkdir %localDownloadPath% ) CALL bitsadmin.exe /transfer New-SubredditHTMLArchive /download "https://raw.githubusercontent.com/mbarr564/New-SubredditHTMLArchive/main/New-SubredditHTMLArchive.ps1" %localDownloadPath%\New-SubredditHTMLArchive.ps1 IF NOT EXIST %localDownloadPath%\New-SubredditHTMLArchive.ps1 ( echo Error: Unable to download the New-SubredditHTMLArchive PowerShell script from github using BITSAdmin! Exiting. GOTO:END ) ) ELSE ( echo New-SubredditHTMLArchive script already exists locally, continuing ... ) REM ## Installing New-SubredditHTMLArchive.ps1 script via PSGallery echo Installing New-SubredditHTMLArchive script to environment PATH via PSGallery ... CALL powershell -Command "Install-Script -Name New-SubredditHTMLArchive -Force" REM ## New-SubredditHTMLArchive.ps1 -InstallPackages -Subreddit TestSubredditC echo New-SubredditHTMLArchive: Installing required packages, running test archive ... CALL powershell -Command "%localDownloadPath%\New-SubredditHTMLArchive.ps1 -Subreddit TestSubredditC -InstallPackages" -Verb RunAs GOTO:END ) REM ## Usage Examples - Previously Installed! echo. echo The New-SubredditHTMLArchive script install has previously completed successfully! echo. echo Now, anytime you want to archive a subreddit, it is this easy: echo 1. Open PowerShell: Start menu, type "PowerShell", click "Windows PowerShell" echo 2. Type "New-Sub", hit TAB, and the script name should autocomplete to "New-SubredditHTMLArchive.ps1" echo 3. Continue to type (after script name), a space, then "-Subreddit", a space, then the subreddit name. echo 4. Hit Enter to start the archive. ETA is one hour per subreddit, without retries, or video links. echo. echo TL;DR: WinKey+R, "powershell", ENTER, "New-Sub", TAB, SPACE, "-Su", TAB, SPACE, "mySubreddit", ENTER. echo. echo Example: PS^> New-SubredditHTMLArchive.ps1 -Subreddit AnyNonPrivateSubredditName echo Example: PS^> New-SubredditHTMLArchive.ps1 -Subreddit HugeVideoLinksSubreddit -Background -NoMediaPurge echo Example: PS^> New-SubredditHTMLArchive.ps1 -Subreddits PowerShell,Python,GNURadio,HomeLab -Background :END echo. PAUSE