Thanks for the info.Ovg wrote: 2021-10-16, 09:01 UTC 2tuska
One note: Now script ignores the root directory of any drive (c:\, d:\, e:\ and so on), they will not be listed, I'll correct this later.
I made another small correction to the script with my paths and settings.
Please take this one. Thank you!
Script - 2021-10-16_1051.AHK
Code: Select all
;https://www.ghisler.ch/board/viewtopic.php?t=75439 Open Everything GUI results with TC LOADLIST
;https://www.ghisler.ch/board/viewtopic.php?t=75417 LOADLIST command and UTF8 file lists
;https://www.voidtools.com/forum/viewtopic.php?f=4&t=10594 Send ResultsList to Total Commander
;
; Build AutoHotkey_L
; Build x64
; Build Kill=true
; Build Zip=false
; Build Run=true
#NoEnv
;#Persistent
#SingleInstance Force
SetBatchLines, -1
;#x::
; Create / read .ini file settings
SetTitleMatchMode, RegEx
iniFile := RegExReplace(A_ScriptFullPath, "(ahk|exe)$", "ini")
if not (FileExist(iniFile)) {
iniContent :="
( LTrim
[General]
; **************************************************************************************************
; Where to save the output (full path)
DestinationFile=D:\Daten\Programme\TotalCommander\TCD_USB-Stick\TC32-64USB\EV-Results\EV-Results.txt
; **************************************************************************************************
; The columns 'Name' and 'Path' must be visible in the Everything
; window. The first value is the position of the 'Path', the second
; value is the position of the 'Name' column
; Default: 2,1
; *****************************
EverythingColumnPositions=2,1
AddEndSlash=1
; *****************************
)"
FileAppend, % iniContent, % iniFile, UTF-16
}
; ***************
IniRead, DestinationFile, % iniFile, General, DestinationFile, % A_Temp "\~EV-Results.txt"
; ***************
IniRead, EverythingColumnPositions, % iniFile, General, EverythingColumnPositions, 2`,1
IniRead, AddEndSlash, % iniFile, General, AddEndSlash, 1
DestinationFile := ResolveEnvVars(DestinationFile)
EverythingColumnPositions := StrReplace(EverythingColumnPositions, " ")
; Force default value if none is given (or path doesn't exist)
SplitPath, DestinationFile, , dstPath
if (DestinationFile = "" || !InStr(FileExist(dstPath), "D")) {
; ************************************************************************************
DestinationFile := "D:\Daten\Programme\TotalCommander\TCD_USB-Stick\TC32-64USB\EV-Results\EV-Results.txt"
; ************************************************************************************
}
if (EverythingColumnPositions = "" || !InStr(EverythingColumnPositions, ",")) {
EverythingColumnPositions := "2,1"
}
;OutputDebug, % "DestinationFile: " DestinationFile
columnArray := StrSplit(EverythingColumnPositions, ",")
;hWnd := WinExist("im).*?Everything ahk_class EVERYTHING")
hWnd := WinExist("ahk_exe Everything(?:\d\d)*\.exe")
if hWnd
{
ControlGet, winContent, List, , SysListView321, % "ahk_id" hWnd
if (winContent)
{
fullContent := ""
; Loop over row(s)
Loop, Parse, winContent, `n
{
rowID := A_Index
path := ""
name := ""
full := ""
Bad := 2
; Loop over column(s)
Loop, Parse, A_LoopField, % A_Tab
{
colID := A_Index
content := A_LoopField
If (colID > columnArray[1] And colID > columnArray[2])
{
Break
}
Else
{
If (colID == columnArray[1])
{
If !RegExMatch(content,"i)^[a-z]:")
{
Break
}
path := content
Bad -= 1
If !RegExMatch(path,"\\$")
{
path := path . "\"
}
}
Else if (colID == columnArray[2])
{
If content is Space
{
Break
}
name := content
Bad -= 1
}
}
}
If (Bad == 0)
{
full := path . name
If InStr(FileExist(full), "D")
{
if (AddEndSlash == 1)
{
if !RegExMatch(full,"\\$")
{
full := full . "\"
}
}
Else
{
If RegExMatch(full,"\\$")
{
full := SubStr(full,1,StrLen(full)-1)
}
}
}
fullContent .= full "`n"
}
}
fullContent := RegExReplace(fullContent,"\R$","")
If (FileExist(DestinationFile))
FileDelete, % DestinationFile
FileAppend, % fullContent, % DestinationFile, UTF-16
; **********************************************************************************************************************************************************
run "D:\Daten\Programme\TotalCommander\TCD_USB-Stick\TC32-64USB\TOTALCMD64.EXE" /O /T /S D:\Daten\Programme\TotalCommander\TCD_USB-Stick\TC32-64USB\EV-Results\
; **********************************************************************************************************************************************************
; run "D:\Daten\Programme\TotalCommander\TCD_USB-Stick\TC32-64USB\TOTALCMD64.EXE" /O /R=D:\Daten\Programme\TotalCommander\TCD_USB-Stick\TC32-64USB\EV-Results\
; run "C:\Program Files\Total Commander\TotalCmd64.exe" /O /R=g:\System\Temp
; *****************************************************************
run "C:\Tools\Everything\Everything64.exe" -instance "PRIVATE" -close
; *****************************************************************
; run "C:\Tools\Everything\Everything64.exe" -close
; *****************************************************************
}
Else
; Empty search result
{
Msgbox, 16,, Search result is Empty, Nothing to do ...
}
; No Everything window visible
} Else {
Msgbox, 16, Fatal error, Everything window does not exist!
}
SetTitleMatchMode, 1
return
; ==================================
; = GOTO: FUNCTIONS - ResolveEnvVars
; ==================================
; http://www.autohotkey.com/board/topic/40115-func-envvars-replace-environment-variables-in-text/#entry310601
ResolveEnvVars(str) {
if sz := DllCall("ExpandEnvironmentStrings", "uint", &str, "uint", 0, "uint", 0)
{
VarSetCapacity(dst, A_IsUnicode ? sz * 2 : sz)
if DllCall("ExpandEnvironmentStrings", "uint", &str, "str", dst, "uint", sz)
return dst
}
return str
}