Pwsh 7.4.1> [1] 🐒
CnC.FindFiles -BaseDirectory $Paths.Generals.Root_MyDocs -Extension log, ini
C:\Users\nin\SkyDrive\Documents\Command and Conquer Generals Data\Options.ini
C:\Users\nin\SkyDrive\Documents\Command and Conquer Generals Data\Skirmish.ini
Pwsh 7.4.1> [1] 🐒
CnC.FindFiles -BaseDirectory $Paths.TiberianSun.Root -Extension log, ini
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\DDrawCompat-game.log
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\DDrawCompat.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\FinalSun\FSData.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\FinalSun\FSLanguage.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\FinalSun\FinalSunDefaults.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\FinalSun\StdMapTS.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\Internet\Wolapi.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\KEYBOARD.INI
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\SUN.INI
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\Themes\themes.ini
Pwsh 7.4.1> [1] 🐒
CnC.FindFiles -Extension log, ini -BaseDirectory 'H:\SteamLibrary\steamapps\common\Command & Conquer'
H:\SteamLibrary\steamapps\common\Command & Conquer\CONQUER.INI
H:\SteamLibrary\steamapps\common\Command & Conquer\DDrawCompat-C&C95.log
H:\SteamLibrary\steamapps\common\Command & Conquer\DDrawCompat.ini
Pwsh 7.4.1> [1] 🐒
CnC.FindFiles -Extension log, ini -BaseDirectory 'H:\SteamLibrary\steamapps\common\Command & Conquer Red Alert II'
H:\SteamLibrary\steamapps\common\Command & Conquer Red Alert II\RA2.INI
H:\SteamLibrary\steamapps\common\Command & Conquer Red Alert II\DDrawCompat.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Red Alert II\RA2MD.INI
H:\SteamLibrary\steamapps\common\Command & Conquer Red Alert II\Internet\Wolapi.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Red Alert II\FinalAlert2\StdMapRA2.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Red Alert II\FinalAlert2\FinalAlertDefaults.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Red Alert II\FinalAlert2\FALanguage.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Red Alert II\FinalAlert2\FAData.ini
Pwsh 7.4.1> [1] 🐒
CnC.FindFiles -Extension log, ini -BaseDirectory 'H:\SteamLibrary\steamapps\common\Command & Conquer Renegade'
H:\SteamLibrary\steamapps\common\Command & Conquer Renegade\Data\WWAudio.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Renegade\Data\stylemgr.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Renegade\Data\svrcfg_cnc.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Renegade\Internet\Wolapi.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Renegade\server.ini
Pwsh 7.4.1> [1] 🐒
CnC.FindFiles -Extension log, ini -BaseDirectory 'H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun'
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\DDrawCompat.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\FinalSun\FSData.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\FinalSun\FSLanguage.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\FinalSun\FinalSunDefaults.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\FinalSun\StdMapTS.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\Internet\Wolapi.ini
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\KEYBOARD.INI
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\SUN.INI
H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\Themes\themes.ini
Pwsh 7.4.1> [1] 🐒
CnC.FindFiles -Extension log, ini -BaseDirectory 'H:\SteamLibrary\steamapps\common\Command and Conquer 3 - Kane's Wrath'
H:\SteamLibrary\steamapps\common\Command and Conquer 3 - Kane's Wrath\Support\patchdoc.ini
H:\SteamLibrary\steamapps\common\Command and Conquer 3 - Kane's Wrath\Support\Localization.ini
Pwsh 7.4.1> [1] 🐒
CnC.FindFiles -Extension log, ini -BaseDirectory $Paths.Generals.Root
H:\SteamLibrary\steamapps\common\Command and Conquer Generals\RedistInstallers\Options_Helper\Options.ini
H:\SteamLibrary\steamapps\common\Command and Conquer Generals\SUN.INI
Pwsh 7.4.1> [1] 🐒
CnC.FindFiles -Extension log, ini -BaseDirectory $Paths.Generals.Root_MyDocs
C:\Users\nin\SkyDrive\Documents\Command and Conquer Generals Data\Options.ini
C:\Users\nin\SkyDrive\Documents\Command and Conquer Generals Data\Skirmish.ini
Pwsh 7.4.1> [1] 🐒
CnC.FindFiles -Extension log, ini -BaseDirectory 'H:\SteamLibrary\steamapps\common\Command and Conquer Red Alert 3'
H:\SteamLibrary\steamapps\common\Command and Conquer Red Alert 3\Support\patchdoc.ini
Last active
March 17, 2024 22:40
-
-
Save ninmonkey/f9d0b5aa94c64dc98adb2f16d9fafa3c to your computer and use it in GitHub Desktop.
CommandAndConquerySet-ConfigFileLocations.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using namespace System.Collections.Generic | |
$script:Paths = [ordered]@{} | |
@' | |
try this EverythingSearchQuery: | |
dm:last45minutes path:"*sun*" ( !path:ww:"%appdata%\code" ( !file:"-old.ini" !file:"-prev.ini" ) !path:"c:\windows" !path:"%AppData%\Microsoft\Windows\Recent" ) | |
'@ | |
$Paths.TiberianSun = @{ | |
Root = gi 'H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun' | |
RootLog = gi 'H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\DDrawCompat-game.log' | |
ManualPaths = @{ | |
MainIni = gi 'H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\SUN.INI' | |
KeyboardIni = gi 'H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\KEYBOARD.INI' | |
} | |
} | |
$query = Select-String -Path $paths.TiberianSun.RootLog -Pattern '[a-zA-Z]:\\.*\.ini' -AllMatches | |
$Paths.TiberianSun.FoundIni = @( $query.Matches.Value ) | |
$Paths.TiberianSun.ExistingIni = @( $query.Matches.Value | Get-Item -ea 'ignore' ) | |
$Paths.Generals = @{ | |
Root_MyDocs = gi 'C:\Users\cppmo_000\SkyDrive\Documents\Command and Conquer Generals Data' | |
Root = gi 'H:\SteamLibrary\steamapps\common\Command and Conquer Generals' | |
} | |
$Paths.GeneralsZeroHour = @{ | |
Root_MyDocs = gi 'C:\Users\cppmo_000\SkyDrive\Documents\Command and Conquer Generals Zero Hour Data' | |
ManualPaths = @{ | |
MainIni = gi 'C:\Users\cppmo_000\SkyDrive\Documents\Command and Conquer Generals Zero Hour Data\Options.ini' | |
SkirmishIni = gi 'C:\Users\cppmo_000\SkyDrive\Documents\Command and Conquer Generals Zero Hour Data\Skirmish.ini' | |
} | |
} | |
$Paths.CnCOriginal = @{ | |
Root = gi 'H:\SteamLibrary\steamapps\common\Command & Conquer' | |
} | |
$Paths.Renegade = @{ | |
Root = gi 'H:\SteamLibrary\steamapps\common\Command & Conquer Renegade' | |
} | |
$Paths.RedAlertII = @{ | |
Root = gi 'H:\SteamLibrary\steamapps\common\Command & Conquer Red Alert II' | |
} | |
$Paths.KanesWrath = @{ | |
Root = gi 'H:\SteamLibrary\steamapps\common\Command and Conquer 3 - Kane''s Wrath' | |
} | |
$Paths.RedAlert3 = @{ | |
Root = gi 'H:\SteamLibrary\steamapps\common\Command and Conquer Red Alert 3' | |
} | |
$toIgnoreRegex = '(prev|old)\d*\.ini$' # hides copies, like: 'file.old.ini' | |
function RenderPathUrl { | |
# lets you ctrl+click filepaths to open the file directly | |
process { | |
$_ | Get-Item | |
| Join-String -f '<file:///{0}>' -p { $_.FullName -replace ' ', '%20' } | |
} | |
} | |
function CnC.FindFiles { | |
<# | |
.SYNOPSIS | |
The core entry point for the user to find relevant files. Sugar around `fd` so it's very fast and easy to use. | |
.NOTES | |
parameters have auto completion for default value | |
.EXAMPLE | |
CnC.FindFiles -BaseDirectory $Paths.TiberianSun.Root | |
CnC.FindFiles -BaseDirectory $Paths.TiberianSun.Root -WithinFilter 2hours -FileType ini, log | |
CnC.FindFiles -BaseDirectory $Paths.TiberianSun.Root -WithinFilter 2hours | |
CnC.FindFiles -BaseDirectory $Paths.TiberianSun.Root -WithinFilter 2hours -FileType ini | |
#> | |
[CmdletBinding()] | |
param( | |
[ArgumentCompletions('2hours', '5minutes', '10minutes', '90seconds')] | |
[string]$WithinFilter, | |
[Alias('Extension', 'Ext', 'Kind', 'TypeOf')] | |
[Parameter()] | |
[ArgumentCompletions( | |
'ini', 'json', 'log', 'vdf', 'sav', 'pdf', 'doc', 'htm', 'html', 'docx', 'csv', 'txt' | |
)][string[]]$FileType, | |
[Parameter(Mandatory)] | |
[string]$BaseDirectory, | |
[switch]$WhatIf | |
) | |
[List[Object]]$binParams = @() | |
if( $PSBoundParameters. ContainsKey('FileType') ) { | |
$binParams.AddRange(@( | |
$fileType.ForEach({ '-e', $_ }) | |
)) | |
} | |
if( $PSBoundParameters. ContainsKey('WithinFilter') ) { | |
$binParams.AddRange(@( | |
'--changed-within', $WithinFilter | |
)) | |
} | |
$binParams.AddRange(@( | |
'--search-path', $BaseDirectory | |
)) | |
$BinParams | Join-String -sep ' ' -op 'Invoke fd => ' | Write-verbose # | write-host -fg 'gray80' -bg 'gray20' | |
if($WhatIf) { return } | |
# fd --changed-within 2hours --search-path $Paths.TiberianSun.Root | |
& fd @binParams | |
} | |
function CnC.FindFilesUsedByLogs { | |
<# | |
.EXAMPLE | |
CnC.FindFilesUsedByLogs -LogPath 'H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\DDrawCompat-game.log' | |
#> | |
param( [string]$LogPath ) | |
$RegexIniFilepath = '[a-zA-Z]:\\.*\.ini' | |
Get-Content $LogPath | |
| Select-String -Pattern $RegexIniFilepath -AllMatches -List | |
} | |
## preview render | |
$Paths | %{ | |
# h1 $_.Keys | |
$_.Values | Ft -AutoSize | |
} | |
# note: not all files found in the log, currently exist | |
# h1 'show some tiberian sun' | |
$Paths.TiberianSun.ExistingIni # | Join.UL | |
$Paths.TiberianSun.ExistingIni | RenderPathUrl # | Join.UL | |
@' | |
$Paths | |
is the top level object that has all paths. some properties are dynamic. | |
To try: | |
Search by recently modified, or by file kinds ( or both at once ) | |
CnC.FindFiles -BaseDirectory $Paths.TiberianSun.Root -WithinFilter 25minutes | |
CnC.FindFiles -BaseDirectory $Paths.TiberianSun.Root -FileType ini, log | |
# for clickable filepaths: | |
CnC.FindFiles -BaseDirectory $Paths.GeneralsZeroHour.Root_MyDocs -WithinFilter 5minutes | RenderPathUrl | |
# to find config files that don't exist but are used, you can search the log file: | |
$RegexIniName = '[a-zA-Z]:\\.*\.ini' | |
$LogName = 'H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\DDrawCompat-game.log' | |
Get-Content $LogName | Select-String -Pattern $RegexIniName -AllMatches -List | |
Loading global config file: C:\ProgramData\DDrawCompat\DDrawCompat.ini | |
Loading user config file: C:\Users\cppmo_000\AppData\Local\DDrawCompat\DDrawCompat.ini | |
Loading directory config file: H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\DDrawCompat.ini | |
Loading process config file: H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\DDrawCompat-game.ini | |
Loading overlay config file: H:\SteamLibrary\steamapps\common\Command & Conquer Tiberian Sun\DDrawCompatOverlay-game.ini | |
'@ | |
# Who has mydocs defined? | |
# $paths.getEnumerator() | ?{ $_.value.keys -match 'MyDocs' } | |
$DeclaredAs_MyDocs = | |
$paths.GetEnumerator().Where({ $_.Value.keys -match 'MyDocs' }).forEach({ $_.Value.Root_MyDocs }) | |
$DeclaredAs_MyDocs.FullName | %{ CnC.FindFiles -Extension log, ini -BaseDirectory $_ } | |
$DeclaredAs_MyDocs.FullName | %{ CnC.FindFiles -Extension log, ini -BaseDirectory $_ } | ?{ $_ -notmatch $toIgnoreRegex } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment