@echo off setlocal enabledelayedexpansion :: Default values set "company_name=joesiu" set "package_name=common.package-name" set "package_display_name=Package Display Name" set "package_description=This is an example package description." set "git_url=https://github.com/JoeSiu/UnityPackages" set "package_path=Assets/Common/" set "author_name=Joe Siu" set "author_url=https://github.com/JoeSiu" :: Get user input with defaults echo. set /p "input_company_name=Enter company_name [%company_name%]: " if not "!input_company_name!"=="" set "company_name=!input_company_name!" echo. set /p "input_package_name=Enter package_name [%package_name%]: " if not "!input_package_name!"=="" set "package_name=!input_package_name!" echo. set /p "input_package_display_name=Enter package_display_name [%package_display_name%]: " if not "!input_package_display_name!"=="" set "package_display_name=!input_package_display_name!" echo. set /p "input_package_description=Enter package_description [%package_description%]: " if not "!input_package_description!"=="" set "package_description=!input_package_description!" echo. set /p "input_git_url=Enter git_url [%git_url%]: " if not "!input_git_url!"=="" set "git_url=!input_git_url!" echo. set /p "input_package_path=Enter package_path [%package_path%]: " if not "!input_package_path!"=="" set "package_path=!input_package_path!" echo. set /p "input_author_name=Enter author_name [%author_name%]: " if not "!input_author_name!"=="" set "author_name=!input_author_name!" echo. set /p "input_author_url=Enter author_url [%author_url%]: " if not "!input_author_url!"=="" set "author_url=!input_author_url!" :: Update files echo. echo Updating variables ^& filenames... :: Use PowerShell to update file contents (excluding .git folder and batch files) powershell -Command "$companyName='%company_name%'; $packageName='%package_name%'; $displayName='%package_display_name%'; $description='%package_description%'; $gitUrl='%git_url%'; $packagePath='%package_path%'; $authorName='%author_name%'; $authorUrl='%author_url%'; Get-ChildItem -Recurse -File | Where-Object { $_.FullName -notmatch '\\.git' -and $_.Extension -ne '.bat' } | ForEach-Object { $content = [System.IO.File]::ReadAllText($_.FullName); $content = $content -replace '\[company-name\]', $companyName -replace '\[package-name\]', $packageName -replace '\[package-display-name\]', $displayName -replace '\[package-description\]', $description -replace '\[git-url\]', $gitUrl -replace '\[package-path\]', $packagePath -replace '\[author-name\]', $authorName -replace '\[author_name\]', $authorName -replace '\[author-url\]', $authorUrl; [System.IO.File]::WriteAllText($_.FullName, $content) }" :: Rename files (excluding .git folder and batch files) powershell -Command "$companyName='%company_name%'; $packageName='%package_name%'; Get-ChildItem -Recurse -File | Where-Object { $_.FullName -notmatch '\\.git' -and $_.Extension -ne '.bat' -and ($_.Name -match '\[company-name\]\.\[package-name\]' -or $_.Name -match '^\[package-name\]') } | ForEach-Object { $dir = $_.DirectoryName; $newName = $_.Name -replace '\[company-name\]\.\[package-name\]', ($companyName + '.' + $packageName) -replace '^\[package-name\]', $packageName; Rename-Item -LiteralPath $_.FullName -NewName $newName }" echo. echo DONE! echo. pause