drobne skrypty do automatyzacji z TC
Posted: 2023-11-26, 10:55 UTC
Z TC jest możliwość zaprogramować cokolwiek niezłożonego i uruchomić z paska przycisków lub skonfigurować skrót-klawiaturowy. Można zautomatyzować jednym kliknięciem, przykładowo dodanie lub wykluczenie rozszerzenia pliku do wykrywania przez wtyczki, w tym wiele innych funkcjonalności (jak przestawień dowolnej wtyczki).
*W Windows™ zastąpiono terminalem tradycyjną konsole. PowerShell to domyślna powłoka. Może być mankamentem to, że zawiera tłumaczenie angielskie na np. francuski, a standardowo nie ma polskiego. Spora zaleta skryptu to potencjał generowania dość precyzyjnego kodu przez AI i to od algorytmu napisanego po polsku. Twórcy systemu opracowują badania nad sztuczną inteligencją nakładem miliardów $.
Do znalezienia są moduły lub aplikacja, która przetwarza plik .ps1 na wykonywalny plik .exe
W między czasie mogą pojawić się różne*
Code: Select all
# PowerShell script adding or remove file extension for the plugin
<#
Argumenty uruchomienia oddzielone spacją:
argument 1 to ścieżka do pliku konfiguracyjnego TC np. "C:\path\totalcmd.ini"
argument 2 to nazwa wtyczki wg pliku .ini (zapis w "")
argument 3 to rozszerzenie pliku do wykrywania przez określoną wtyczkę (może być w '')
argument 4 opcjonalny - 1 oznacza dodanie rozszerzenia, a bez podania wartości to wykluczenie rozszerzenia
#>
# Przypisanie nazwy pliku do zmiennej plik1
$plik1 = $args[0]
# Przypisanie wartości parametru 2 do zmiennej plug
$plug = $args[1]
# Przypisanie wartości parametru 3 do zmiennej extP
$extP = $args[2]
# Sprawdzenie czy parametr 4 został podany i przypisanie wartości do zmiennej klucz1
if ($args[3]) {
$klucz1 = $args[3]
} else {
$klucz1 = 0
}
Try {
# Sprawdzenie czy plik istnieje
$fileExists = Test-Path $plik1
if (-not $fileExists) {
throw "Błędne dane: Plik $plik1 nie istnieje."
}
# Tworzenie kopii zapasowej pliku
$backupFile = $plik1 + ".cop"
Copy-Item $plik1 $backupFile
# Otwarcie pliku do odczytu
$fileContent = Get-Content $plik1
# Szukanie tekstu ze zmiennej plug i zapamiętanie pierwszego znaku w linii
$znalezionaLinia = $false
foreach ($line in $fileContent) {
if ($line.Contains($plug)) {
$znak1 = $line.Substring(0, 1)
$znalezionaLinia = $true
break
}
}
if (-not $znalezionaLinia) {
throw "Nie znaleziono tekstu $plug w pliku $plik1."
}
# Tworzenie nowej zmiennej start1 ze znak1 & detectP
$start1 = $znak1 + "_detect="
# Kontynuowanie szukania w pliku tekstu ze zmiennej start1 i zapamiętanie numeru linii
$znalezionaLinia2 = $false
$numerLinii = 0
foreach ($line in $fileContent) {
$numerLinii++
if ($line.Contains($start1)) {
$znalezionaLinia2 = $true
break
}
}
if (-not $znalezionaLinia2) {
throw "Nie znaleziono tekstu $start1 w pliku $plik1."
}
# Wyświetlenie prośby o potwierdzenie i naciśnięcie Enter
Write-Host "Prośba potwierdzenia kontynuowania - nacisnąć Enter."
$confirmation = Read-Host
# Zastąpienie ostatniego znaku w zapamiętanej linii tekstem ze zmiennej extP
if ($confirmation -eq "" -and $klucz1 -eq 1) {
$lineToReplace = $fileContent[$numerLinii - 1]
$lineToReplace = $lineToReplace.Substring(0, $lineToReplace.Length - 1) + $extP
$fileContent[$numerLinii - 1] = $lineToReplace
}
# Zastąpienie szukanego tekstu w zapamiętanej linii stałą tekstową ( albo np. const4='"' )
if ($confirmation -eq "" -and $klucz1 -eq 0) {
$lineToReplace = $fileContent[$numerLinii - 1]
$lineToReplace = $lineToReplace.Replace($extP, '"')
$fileContent[$numerLinii - 1] = $lineToReplace
}
# Zapisanie zmienionego pliku lub i przekodowanie
$fileContent | Set-Content $plik1 #-Encoding Unicode
Write-Host "Zakończono pomyślnie."
} catch {
Write-Host "Błąd: $($_.Exception.Message)"
}
# usage: ./this.ps1 ini plugin EXT [arg4]
# example: powerShell .\auto-ext "totalcmd.ini" "=%COMMANDER_PATH%\PLUGINS\WDX\SignatureInfo\SignatureInfo.wdx" ' | "PS1""' 1
Do znalezienia są moduły lub aplikacja, która przetwarza plik .ps1 na wykonywalny plik .exe