Nein, ich glaube nicht. Manchmal ist das deutsche Unterforum voller als das englische, daher glaube ich nicht, dass die Sprache das Problem ist. Es gab einfach keine Antwort in deinem Thread. Wenn du eine Antwort von Herrn Ghisler möchtest, kannst du explizit darum bitten oder ihm eine E-Mail schreiben.]]>alfware17 wrote: 2025-04-01, 15:25 UTC ..und ob mein Eindruck richtig ar, daß man mit einer deutschen Anfrage dort schlechte Karten hat.
Nein, ich glaube nicht. Manchmal ist das deutsche Unterforum voller als das englische, daher glaube ich nicht, dass die Sprache das Problem ist. Es gab einfach keine Antwort in deinem Thread. Wenn du eine Antwort von Herrn Ghisler möchtest, kannst du explizit darum bitten oder ihm eine E-Mail schreiben.]]>alfware17 wrote: 2025-04-01, 15:25 UTC ..und ob mein Eindruck richtig ar, daß man mit einer deutschen Anfrage dort schlechte Karten hat.
Code: Select all
[=shelldetails.ein_feld]\[N]
Wenn das Datum bereits in den Dateinamen enthalten ist, kann man das auch nutzen, um einen Verschiebevorgang in das Verzeichnis auszulösen. Beispiel für Datum am Beginn des Dateinamens:Code: Select all
[N1-10]\[N]
Code: Select all
[=shelldetails.ein_feld]\[N]
Wenn das Datum bereits in den Dateinamen enthalten ist, kann man das auch nutzen, um einen Verschiebevorgang in das Verzeichnis auszulösen. Beispiel für Datum am Beginn des Dateinamens:Code: Select all
[N1-10]\[N]
Anwendungssoftware hat erstmal keinen Einfluss darauf, ob und wie ein Datenträger reagiert und wie lange dieser braucht, um eine Antwort zu liefern. Das ist ein Grund, warum es immer wieder die Situation gibt, dass unter Umständen das ganze OS hängt, wenn ein Datenträger nicht reagiert.Und bei Lesefehlern wäre es lieb, wenn er abbricht und nicht die ganze Zeit wie tot verharrt.
Das wird nichts bringen, wenn ein Hintergrundprogramm oder Dienst der Auslöser ist. Daher mein Vorschlag mit dem Test im abgesicherten Modus. Stück für Stück Hintergrundprogramme beenden - allen voran den Virenscanner (auch Defender!) - und immer wieder testen.]]>Aber ja, ich werde die beiden SSD mal untersuchen und platt machen, die Daten habe ich ja gesichert.
Anwendungssoftware hat erstmal keinen Einfluss darauf, ob und wie ein Datenträger reagiert und wie lange dieser braucht, um eine Antwort zu liefern. Das ist ein Grund, warum es immer wieder die Situation gibt, dass unter Umständen das ganze OS hängt, wenn ein Datenträger nicht reagiert.Und bei Lesefehlern wäre es lieb, wenn er abbricht und nicht die ganze Zeit wie tot verharrt.
Das wird nichts bringen, wenn ein Hintergrundprogramm oder Dienst der Auslöser ist. Daher mein Vorschlag mit dem Test im abgesicherten Modus. Stück für Stück Hintergrundprogramme beenden - allen voran den Virenscanner (auch Defender!) - und immer wieder testen.]]>Aber ja, ich werde die beiden SSD mal untersuchen und platt machen, die Daten habe ich ja gesichert.
Code: Select all
@echo off
setlocal enabledelayedexpansion
:: Datei-Liste aus Total Commander einlesen
for /f "delims=" %%F in (%1) do (
set "filepath=%%~fF" :: vollständiger Pfad der Datei
set "filename=%%~nF" :: Dateiname ohne Erweiterung
set "extension=%%~xF" :: Dateierweiterung
:: Pfad für WMIC vorbereiten (Backslashes verdoppeln für wmic)
set "filepath=!filepath:\=\\!"
:: Änderungsdatum abrufen
for /f "tokens=2 delims==" %%A in ('wmic datafile where name^="!filepath!" get LastModified /value') do (
set "timestamp=%%A"
)
:: Prüfen, ob der Timestamp gefüllt wurde
if not defined timestamp (
echo Fehler: Kein Zeitstempel für %%F gefunden!
pause
exit /b
)
:: Timestamp ins richtige Format bringen (_dYYYYMMDD_tHHMMSS)
set "timestamp=_d!timestamp:~0,8!_t!timestamp:~8,6!"
:: Datei mit neuem Namen kopieren
copy "!filepath!" "%%~dpF!filename!!timestamp!!extension!" > nul
)
Code: Select all
@echo off
setlocal enabledelayedexpansion
:: Datei-Liste aus Total Commander einlesen
for /f "delims=" %%F in (%1) do (
set "filepath=%%~fF" :: vollständiger Pfad der Datei
set "filename=%%~nF" :: Dateiname ohne Erweiterung
set "extension=%%~xF" :: Dateierweiterung
:: Pfad für WMIC vorbereiten (Backslashes verdoppeln für wmic)
set "filepath=!filepath:\=\\!"
:: Änderungsdatum abrufen
for /f "tokens=2 delims==" %%A in ('wmic datafile where name^="!filepath!" get LastModified /value') do (
set "timestamp=%%A"
)
:: Prüfen, ob der Timestamp gefüllt wurde
if not defined timestamp (
echo Fehler: Kein Zeitstempel für %%F gefunden!
pause
exit /b
)
:: Timestamp ins richtige Format bringen (_dYYYYMMDD_tHHMMSS)
set "timestamp=_d!timestamp:~0,8!_t!timestamp:~8,6!"
:: Datei mit neuem Namen kopieren
copy "!filepath!" "%%~dpF!filename!!timestamp!!extension!" > nul
)
Code: Select all
program kopiere;
{$mode objfpc}
uses
Windows, SysUtils;
var
ListFile: TextFile;
FileName, NewFileName, NamePart, ExtPart: string;
FileTime: TDateTime;
SearchRec: TSearchRec;
begin
if ParamCount < 1 then begin
Writeln('Fehler: Keine Parameterliste übergeben.');
Halt(1);
end;
AssignFile(ListFile, ParamStr(1));
{$I-} Reset(ListFile); {$I+}
if IOResult <> 0 then begin
Writeln('Fehler: Kann Datei nicht öffnen: ', ParamStr(1));
Halt(1);
end;
while not EOF(ListFile) do begin
ReadLn(ListFile, FileName);
if FindFirst(FileName, faAnyFile, SearchRec) = 0 then begin
FileTime := FileDateToDateTime(SearchRec.Time);
NamePart := ChangeFileExt(FileName, '');
ExtPart := ExtractFileExt(FileName);
NewFileName := NamePart + '_d' + FormatDateTime('YYYYMMDD', FileTime) + '_t' + FormatDateTime('HHMMSS', FileTime) + ExtPart;
if CopyFile(PChar(AnsiString(FileName)), PChar(AnsiString(NewFileName)), False)
then Writeln('Kopiert: ', NewFileName)
else Writeln('Fehler beim Kopieren: ', FileName);
FindClose(SearchRec);
end
else Writeln(FileName, ' (Fehler: Datei nicht gefunden)');
end;
CloseFile(ListFile);
//Readln;
end.
Code: Select all
program kopiere;
{$mode objfpc}
uses
Windows, SysUtils;
var
ListFile: TextFile;
FileName, NewFileName, NamePart, ExtPart: string;
FileTime: TDateTime;
SearchRec: TSearchRec;
begin
if ParamCount < 1 then begin
Writeln('Fehler: Keine Parameterliste übergeben.');
Halt(1);
end;
AssignFile(ListFile, ParamStr(1));
{$I-} Reset(ListFile); {$I+}
if IOResult <> 0 then begin
Writeln('Fehler: Kann Datei nicht öffnen: ', ParamStr(1));
Halt(1);
end;
while not EOF(ListFile) do begin
ReadLn(ListFile, FileName);
if FindFirst(FileName, faAnyFile, SearchRec) = 0 then begin
FileTime := FileDateToDateTime(SearchRec.Time);
NamePart := ChangeFileExt(FileName, '');
ExtPart := ExtractFileExt(FileName);
NewFileName := NamePart + '_d' + FormatDateTime('YYYYMMDD', FileTime) + '_t' + FormatDateTime('HHMMSS', FileTime) + ExtPart;
if CopyFile(PChar(AnsiString(FileName)), PChar(AnsiString(NewFileName)), False)
then Writeln('Kopiert: ', NewFileName)
else Writeln('Fehler beim Kopieren: ', FileName);
FindClose(SearchRec);
end
else Writeln(FileName, ' (Fehler: Datei nicht gefunden)');
end;
CloseFile(ListFile);
//Readln;
end.
Im Forum kann man keine Bilder oder andere Dateien hinterlegen. Bitte auf einen Server deiner Wahl hochladen und Link hier posten.Auf dem Bild
Eine Suche (auch die nach Duplikaten), die über beide Panels hinweggeht, erfordert die Eingabe beider Pfade. Daher meine Frage nach den Suchparametern.]]>sieht man das Rechts 2 Namen mit dem links identisch sind
Im Forum kann man keine Bilder oder andere Dateien hinterlegen. Bitte auf einen Server deiner Wahl hochladen und Link hier posten.Auf dem Bild
Eine Suche (auch die nach Duplikaten), die über beide Panels hinweggeht, erfordert die Eingabe beider Pfade. Daher meine Frage nach den Suchparametern.]]>sieht man das Rechts 2 Namen mit dem links identisch sind
Das genügt aber nicht. Es wird immer nur an genau einem Ort - ein Verzeichnis und darunter - gesucht, sofern man nichts anderes einstellt.]]>Na gleicher Name.
Das genügt aber nicht. Es wird immer nur an genau einem Ort - ein Verzeichnis und darunter - gesucht, sofern man nichts anderes einstellt.]]>Na gleicher Name.
Oder wenn beide o.g. Verzeichnisse im Feld "Suchen in" angegeben sind. Letzteres passiert aber nicht automatisch, sondern muss explizit eingegeben werden.Lutschpuppe wrote: 2025-04-08, 15:52 UTCIch möchte in 2 verschiedenen Verzeichnissen suchen nach doppelten Namen.
Einmal im Ordner F:\Audio\Nowi\80's Sampller und einmal im Ordner F:\Audio\Nowi\80's Sampler FLAC & WAV + JPG umgewandelt in MP3
Oder wenn beide o.g. Verzeichnisse im Feld "Suchen in" angegeben sind. Letzteres passiert aber nicht automatisch, sondern muss explizit eingegeben werden.Lutschpuppe wrote: 2025-04-08, 15:52 UTCIch möchte in 2 verschiedenen Verzeichnissen suchen nach doppelten Namen.
Einmal im Ordner F:\Audio\Nowi\80's Sampller und einmal im Ordner F:\Audio\Nowi\80's Sampler FLAC & WAV + JPG umgewandelt in MP3
]]>Suchen in:
Geben Sie hier einen oder mehrere Anfangspfade für die Suche an, getrennt durch ";".
]]>Suchen in:
Geben Sie hier einen oder mehrere Anfangspfade für die Suche an, getrennt durch ";".
Code: Select all
#IfWinActive, ahk_class TTOTAL_CMD
$Control::
PostMessage, 1075, 304
KeyWait, Control
Return
$Control UP::PostMessage, 1075, 307
Code: Select all
#IfWinActive, ahk_class TTOTAL_CMD
$Control::
PostMessage, 1075, 304
KeyWait, Control
Return
$Control UP::PostMessage, 1075, 307
Und dann hast du es nochmals bekräftigt:white wrote: 2025-04-17, 10:43 UTC In der Miniaturansicht können Sie mit der Umschalttaste in Kombination mit den Cursortasten nur ganze Zeilen auswählen, nicht aber nebeneinander liegende Dateien.
Wie Conan erwähnt hat, funktioniert es im Windows Explorer, wo man mit Shift+Horst.Epp wrote: 2025-04-17, 14:30 UTC Das würde auch in allen anderen Programmen nicht funktionieren.
Und dann hast du es nochmals bekräftigt:white wrote: 2025-04-17, 10:43 UTC In der Miniaturansicht können Sie mit der Umschalttaste in Kombination mit den Cursortasten nur ganze Zeilen auswählen, nicht aber nebeneinander liegende Dateien.
Wie Conan erwähnt hat, funktioniert es im Windows Explorer, wo man mit Shift+Horst.Epp wrote: 2025-04-17, 14:30 UTC Das würde auch in allen anderen Programmen nicht funktionieren.
Code: Select all
Stammordner
-Ordner 1
-1.txt
-2.pdf
-Unterordner 1-1
-1.txt
-2.pdf
-Unterordner 1-2
-1.txt
-2.pdf
-Ordner 2
-1.txt
-2.pdf
-Unterordner 2-1
-1.txt
-2.pdf
-Unterordner 2-2
-1.txt
-2.pdf
-Ordner 3
-Unterordner 3-1
-Unterordner 3-2
Code: Select all
-Ordner 1
-1.txt
-Ordner 2
-2.pdf
Code: Select all
Stammordner
-Ordner 1
-1.txt
-2.pdf
-Unterordner 1-1
-1.txt
-2.pdf
-Unterordner 1-2
-1.txt
-2.pdf
-Ordner 2
-1.txt
-2.pdf
-Unterordner 2-1
-1.txt
-2.pdf
-Unterordner 2-2
-1.txt
-2.pdf
-Ordner 3
-Unterordner 3-1
-Unterordner 3-2
Code: Select all
-Ordner 1
-1.txt
-Ordner 2
-2.pdf
Code: Select all
"\Ordner 1\" "\Ordner 2\" "\Ordner 1\*.txt" "\Ordner 2\*.pdf"
Dies setzt voraus, dass der Filter Dateien aus Ordner 1 und Ordner 2 im Startordner der Suche filtern muss.Code: Select all
"\Ordner 1\" "\Ordner 2\" "\Ordner 1\*.txt" "\Ordner 2\*.pdf"
Dies setzt voraus, dass der Filter Dateien aus Ordner 1 und Ordner 2 im Startordner der Suche filtern muss.Code: Select all
"\Ordner 1\" "\Ordner 2\" "\Ordner 1\*.txt" "\Ordner 2\*.pdf"
Code: Select all
"*.pdf" "\DWG\" "\PDF\" "\DWG\*\" "\PDF\*\" "\DWG\*\*.dwg" "\PDF\*\*.pdf"
Code: Select all
"\Ordner 1\" "\Ordner 2\" "\Ordner 1\*.txt" "\Ordner 2\*.pdf"
Code: Select all
"*.pdf" "\DWG\" "\PDF\" "\DWG\*\" "\PDF\*\" "\DWG\*\*.dwg" "\PDF\*\*.pdf"
Code: Select all
[em_selectfilesD]
cmd=selectfilesD
param=%A%Z
Code: Select all
[em_selectfilesD]
cmd=selectfilesD
param=%A%Z
Code: Select all
"*.pdf" "\DWG\" "\PDF\" "\DWG\*\" "\PDF\*\" "\DWG\*\*.dwg" "\PDF\*\*.pdf"
Code: Select all
\*.pdf \DWG\*\*.dwg \PDF\*\*.pdf |**\
Für gute Vorschläge wäre es hilfreich, genau zu wissen, was Sie möchten. Möchten Sie kopieren:chapolote wrote: 2025-04-05, 08:39 UTC Kann ich mir dieses gefilterte Kopieren auf einen Button legen? Idealerweise würde ein Klick darauf folgendes machen:
alles markieren, was es im geöffneten Ordner gibt
gefiltert Kopieren
Auswahl im geöffneten Ordner wieder aufheben
Gespeicherte Filter können im selben Dialog entfernt werden, in dem Sie sie gespeichert haben. Siehe Registerkarte "Laden/Speichern".chapolote wrote: 2025-04-05, 08:39 UTC Und: ich hab beim Ausprobieren mehrere Filter angelegt, und würde die nicht mehr benötigten gerne wieder loswerden. Ich finde aber keine Möglichkeit, die wieder zu entfernen. Wo geht das?
Code: Select all
"*.pdf" "\DWG\" "\PDF\" "\DWG\*\" "\PDF\*\" "\DWG\*\*.dwg" "\PDF\*\*.pdf"
Code: Select all
\*.pdf \DWG\*\*.dwg \PDF\*\*.pdf |**\
Für gute Vorschläge wäre es hilfreich, genau zu wissen, was Sie möchten. Möchten Sie kopieren:chapolote wrote: 2025-04-05, 08:39 UTC Kann ich mir dieses gefilterte Kopieren auf einen Button legen? Idealerweise würde ein Klick darauf folgendes machen:
alles markieren, was es im geöffneten Ordner gibt
gefiltert Kopieren
Auswahl im geöffneten Ordner wieder aufheben
Gespeicherte Filter können im selben Dialog entfernt werden, in dem Sie sie gespeichert haben. Siehe Registerkarte "Laden/Speichern".chapolote wrote: 2025-04-05, 08:39 UTC Und: ich hab beim Ausprobieren mehrere Filter angelegt, und würde die nicht mehr benötigten gerne wieder loswerden. Ich finde aber keine Möglichkeit, die wieder zu entfernen. Wo geht das?
white wrote: 2025-04-05, 13:38 UTC
Für gute Vorschläge wäre es hilfreich, genau zu wissen, was Sie möchten. Möchten Sie kopieren:
PDF-Dateien im Startordner?
DWG-Dateien in Unterordnern des DWG-Ordners, aber nicht in tieferen Unterordnern?
PDF-Dateien in Unterordnern des PDF-Ordners, aber nicht in tieferen Unterordnern?
Möchten Sie die Ordnerstruktur kopieren, auch wenn keine Dateien daraus kopiert werden?
Code: Select all
*.pdf *.dwg \DWG\ \PDF\ \DWG\*\ \PDF\*\ \DWG\*\*\ \PDF\*\*\
Code: Select all
*.pdf *.dwg \DWG\ \PDF\ \DWG\D_*\ \PDF\D_*\ \DWG\D_*\D_*\ \PDF\D_*\D_*\
Code: Select all
*.pdf *.dwg \DWG\ \PDF\ \DWG\D_*\ \PDF\D_*\ \DWG\D_*\D_*\ \PDF\D_*\D_*\ |**\
white wrote: 2025-04-05, 13:38 UTC
Für gute Vorschläge wäre es hilfreich, genau zu wissen, was Sie möchten. Möchten Sie kopieren:
PDF-Dateien im Startordner?
DWG-Dateien in Unterordnern des DWG-Ordners, aber nicht in tieferen Unterordnern?
PDF-Dateien in Unterordnern des PDF-Ordners, aber nicht in tieferen Unterordnern?
Möchten Sie die Ordnerstruktur kopieren, auch wenn keine Dateien daraus kopiert werden?
Code: Select all
*.pdf *.dwg \DWG\ \PDF\ \DWG\*\ \PDF\*\ \DWG\*\*\ \PDF\*\*\
Code: Select all
*.pdf *.dwg \DWG\ \PDF\ \DWG\D_*\ \PDF\D_*\ \DWG\D_*\D_*\ \PDF\D_*\D_*\
Code: Select all
*.pdf *.dwg \DWG\ \PDF\ \DWG\D_*\ \PDF\D_*\ \DWG\D_*\D_*\ \PDF\D_*\D_*\ |**\
Kommando: cm_ClearAll,cm_GoToFirstEntry,cm_GoToPrev,em_selectfilesD DWG PDF,cm_Copy /B1GO5RSW="*.dwg;*.pdf | *\*\"chapolote wrote: 2025-04-05, 08:39 UTCKann ich mir dieses gefilterte Kopieren auf einen Button legen?
Code: Select all
[em_selectfilesD]
cmd=selectfilesD
param=%A%Z
Kommando: cm_ClearAll,cm_GoToFirstEntry,cm_GoToPrev,em_selectfilesD DWG PDF,cm_Copy /B1GO5RSW="*.dwg;*.pdf | *\*\"chapolote wrote: 2025-04-05, 08:39 UTCKann ich mir dieses gefilterte Kopieren auf einen Button legen?
Code: Select all
[em_selectfilesD]
cmd=selectfilesD
param=%A%Z
Ghisler hat nun erklärt, dass Traverse-Filter hier nicht unterstützt werden. Daher ist das Verhalten von Ausdrücken mit einem abschließenden Backslash undefiniert und es ist wahrscheinlich am besten, sie nicht zu verwenden.chapolote wrote: 2025-04-06, 06:43 UTC Jetzt habe ich festgestellt, daß in der 3. Ebene auch Ordner sein können, die pdf und dwg enthalten, die jetzt mit meinem modifizierten Befehl kopiert werden, aber dabei sollten nur Ordner berücksichtigt werden, die mit "D_" anfangen, also beispielsweise "D_Irgendwas" aber nicht "Ordner-XY"
Das erreiche ich mit:Damit sollte ich zu 98% abgedeckt haben, was ich möchte, nur wenn es jetzt nochmals ne 4. Ebene gäbe, wird das definieren der Ordner ja immer komplizierter bzw. länger. Geht das nicht eleganter?Code: Select all
*.pdf *.dwg \DWG\ \PDF\ \DWG\D_*\ \PDF\D_*\ \DWG\D_*\D_*\ \PDF\D_*\D_*\
Code: Select all
\*.pdf \DWG\*\**\*.dwg \PDF\*\**\*.pdf |**\
Ghisler hat nun erklärt, dass Traverse-Filter hier nicht unterstützt werden. Daher ist das Verhalten von Ausdrücken mit einem abschließenden Backslash undefiniert und es ist wahrscheinlich am besten, sie nicht zu verwenden.chapolote wrote: 2025-04-06, 06:43 UTC Jetzt habe ich festgestellt, daß in der 3. Ebene auch Ordner sein können, die pdf und dwg enthalten, die jetzt mit meinem modifizierten Befehl kopiert werden, aber dabei sollten nur Ordner berücksichtigt werden, die mit "D_" anfangen, also beispielsweise "D_Irgendwas" aber nicht "Ordner-XY"
Das erreiche ich mit:Damit sollte ich zu 98% abgedeckt haben, was ich möchte, nur wenn es jetzt nochmals ne 4. Ebene gäbe, wird das definieren der Ordner ja immer komplizierter bzw. länger. Geht das nicht eleganter?Code: Select all
*.pdf *.dwg \DWG\ \PDF\ \DWG\D_*\ \PDF\D_*\ \DWG\D_*\D_*\ \PDF\D_*\D_*\
Code: Select all
\*.pdf \DWG\*\**\*.dwg \PDF\*\**\*.pdf |**\
Um zu verhindern, dass die Struktur gemäß der ursprünglichen Anforderung aus den angegebenen Ordnern kopiert wird.Was das | *\*\ bewirken soll, ist mir nicht ganz klar.
Diese Bedingungen weichen bereits von den ursprünglichen ab. Ich fürchte, ich habe nicht alle richtig verstanden. Kannst Du auch ein Archiv mit der resultierenden Struktur hinzufügen?]]>Ich suche also nach einer Lösung
Um zu verhindern, dass die Struktur gemäß der ursprünglichen Anforderung aus den angegebenen Ordnern kopiert wird.Was das | *\*\ bewirken soll, ist mir nicht ganz klar.
Diese Bedingungen weichen bereits von den ursprünglichen ab. Ich fürchte, ich habe nicht alle richtig verstanden. Kannst Du auch ein Archiv mit der resultierenden Struktur hinzufügen?]]>Ich suche also nach einer Lösung
Hab ich gemacht und liegt jetzt auch unter dem oben angegebenen Link: CopyTestResult]]>Kannst Du auch ein Archiv mit der resultierenden Struktur hinzufügen?
Hab ich gemacht und liegt jetzt auch unter dem oben angegebenen Link: CopyTestResult]]>Kannst Du auch ein Archiv mit der resultierenden Struktur hinzufügen?
Um zu verhindern, dass die Struktur gemäß der ursprünglichen Anforderung aus den angegebenen Ordnern kopiert wird.Was das | *\*\ bewirken soll, ist mir nicht ganz klar.
Um zu verhindern, dass die Struktur gemäß der ursprünglichen Anforderung aus den angegebenen Ordnern kopiert wird.Was das | *\*\ bewirken soll, ist mir nicht ganz klar.
em_SelectFilesD PDF DWG,em_SelectFiles *.pdf *.dwg,cm_Copy /B1GO5RSW=".\*.pdf .\*.dwg .\PDF\*.pdf .\DWG\*.dwg D_*\*.pdf;D_*\*.dwg|**\" |
Code: Select all
[em_SelectFiles]
cmd=selectfiles
param=%A%Z
[em_SelectFilesD]
cmd=selectfilesD
param=%A%Z
Es sei denn, durch eine Suchvorlage mit Plugins. Aber es ist ein langer Weg.]]>
em_SelectFilesD PDF DWG,em_SelectFiles *.pdf *.dwg,cm_Copy /B1GO5RSW=".\*.pdf .\*.dwg .\PDF\*.pdf .\DWG\*.dwg D_*\*.pdf;D_*\*.dwg|**\" |
Code: Select all
[em_SelectFiles]
cmd=selectfiles
param=%A%Z
[em_SelectFilesD]
cmd=selectfilesD
param=%A%Z
Es sei denn, durch eine Suchvorlage mit Plugins. Aber es ist ein langer Weg.]]>
Code: Select all
em_SelectFilesD PDF DWG _Archiv,em_SelectFiles *.pdf *.dwg,cm_Copy /B1GO5RSW=".\*.pdf .\*.dwg .\PDF\*.pdf .\DWG\*.dwg .\_Archiv\*.pdf D_*\D_*.pdf;D_*\D_*.dwg;*\_Archiv\D_*.*|**\ *LLHelper.dwg"
Code: Select all
em_SelectFilesD PDF DWG _Archiv,em_SelectFiles *.pdf *.dwg,cm_Copy /B1GO5RSW=".\*.pdf .\*.dwg .\PDF\*.pdf .\DWG\*.dwg .\_Archiv\*.pdf D_*\D_*.pdf;D_*\D_*.dwg;*\_Archiv\D_*.*|**\ *LLHelper.dwg"
Code: Select all
[Configuration]
UseIniInProgramDir=7
gemacht werden, damit TC die INIs neben seiner EXE verwendet und alle Angaben an sonstigen Orten (außer Kommandozeilenschalter) ignoriert.Code: Select all
[Configuration]
UseIniInProgramDir=7
gemacht werden, damit TC die INIs neben seiner EXE verwendet und alle Angaben an sonstigen Orten (außer Kommandozeilenschalter) ignoriert.Code: Select all
STRG+UMSCH+F8: 1x drücken Separater Verzeichnisbaum (durchschalten: einer, zwei, keiner)
em_Breite_100Percent cm_VerticalPanels,cm_100Percent -> Aufruf mit Shortcut ALT+Y möglich, siehe unten...
STRG+UMSCH+F8: nochmals drücken Separater Verzeichnisbaum (durchschalten: einer, zwei, keiner)
=> Bild <=Code: Select all
POPUP "&Programmelemente"
MENUITEM SEPARATOR
MENUITEM "Buttonbar ein-/ausblenden", cm_VisButtonbar
MENUITEM "Vertikale Buttonbar ein-/ausblenden", cm_VisButtonbar2
MENUITEM "Ordnertabs ein-/ausblenden", cm_VisDirTabs
MENUITEM "Laufwerksbuttons ein-/ausblenden", cm_VisDriveButtons
MENUITEM "Zweite Laufwerksbuttonbar (rechts) ein-/ausblenden", cm_VisTwoDriveButtons
MENUITEM "Laufwerksliste ein-/ausblenden", cm_VisDriveCombo
MENUITEM "Buttons: Flacher/normaler Modus", cm_VisFlatDriveButtons
MENUITEM "Benutzeroberfläche: Flacher/normaler Modus", cm_VisFlatInterface
MENUITEM "Aktuellen Pfad ein-/ausblenden", cm_VisCurDir
MENUITEM "Knöpfe für Verlauf + Laufwerksliste ein-/ausblenden", cm_VisHistHotButtons
MENUITEM "Spaltenüberschriftenzeile ein-/ausblenden", cm_VisTabHeader
MENUITEM "Statusinformationen ein-/ausblenden", cm_VisStatusbar
MENUITEM "Kommandozeile ein-/ausblenden", cm_VisCmdLine
MENUITEM "Funktionstastenknöpfe ein-/ausblenden", cm_VisKeyButtons
MENUITEM "Brotkrumenleiste ein-/ausblenden", cm_VisBreadCrumbs
MENUITEM "Schalte Overlay-Symbole ein/aus", cm_SwitchOverlayIcons
MENUITEM SEPARATOR
END_POPUP
Code: Select all
[em_Breite_100Percent]
button=
cmd=cm_VerticalPanels,cm_100Percent
Code: Select all
em_Breite_50Percent cm_VerticalPanels,cm_50Percent Shortcut: ALT+X
Code: Select all
A+Y=em_Breite_100Percent
Code: Select all
STRG+UMSCH+F8: 1x drücken Separater Verzeichnisbaum (durchschalten: einer, zwei, keiner)
em_Breite_100Percent cm_VerticalPanels,cm_100Percent -> Aufruf mit Shortcut ALT+Y möglich, siehe unten...
STRG+UMSCH+F8: nochmals drücken Separater Verzeichnisbaum (durchschalten: einer, zwei, keiner)
=> Bild <=Code: Select all
POPUP "&Programmelemente"
MENUITEM SEPARATOR
MENUITEM "Buttonbar ein-/ausblenden", cm_VisButtonbar
MENUITEM "Vertikale Buttonbar ein-/ausblenden", cm_VisButtonbar2
MENUITEM "Ordnertabs ein-/ausblenden", cm_VisDirTabs
MENUITEM "Laufwerksbuttons ein-/ausblenden", cm_VisDriveButtons
MENUITEM "Zweite Laufwerksbuttonbar (rechts) ein-/ausblenden", cm_VisTwoDriveButtons
MENUITEM "Laufwerksliste ein-/ausblenden", cm_VisDriveCombo
MENUITEM "Buttons: Flacher/normaler Modus", cm_VisFlatDriveButtons
MENUITEM "Benutzeroberfläche: Flacher/normaler Modus", cm_VisFlatInterface
MENUITEM "Aktuellen Pfad ein-/ausblenden", cm_VisCurDir
MENUITEM "Knöpfe für Verlauf + Laufwerksliste ein-/ausblenden", cm_VisHistHotButtons
MENUITEM "Spaltenüberschriftenzeile ein-/ausblenden", cm_VisTabHeader
MENUITEM "Statusinformationen ein-/ausblenden", cm_VisStatusbar
MENUITEM "Kommandozeile ein-/ausblenden", cm_VisCmdLine
MENUITEM "Funktionstastenknöpfe ein-/ausblenden", cm_VisKeyButtons
MENUITEM "Brotkrumenleiste ein-/ausblenden", cm_VisBreadCrumbs
MENUITEM "Schalte Overlay-Symbole ein/aus", cm_SwitchOverlayIcons
MENUITEM SEPARATOR
END_POPUP
Code: Select all
[em_Breite_100Percent]
button=
cmd=cm_VerticalPanels,cm_100Percent
Code: Select all
em_Breite_50Percent cm_VerticalPanels,cm_50Percent Shortcut: ALT+X
Code: Select all
A+Y=em_Breite_100Percent
Code: Select all
*.lnk !exists($shortcut-target:)
Code: Select all
d: *.lnk !exists($shortcut-target:)
Code: Select all
ev:d: *.lnk !exists($shortcut-target:)
Code: Select all
*.lnk !exists($shortcut-target:)
Code: Select all
d: *.lnk !exists($shortcut-target:)
Code: Select all
ev:d: *.lnk !exists($shortcut-target:)
Doch, Programme ist eine Junction, die auf "Program Files" verweist/verlinkt. Diese gibt es aber normalerweise nur Windows, das von Anfang an mit deutscher Sprache installiert wurde.
Doch, Programme ist eine Junction, die auf "Program Files" verweist/verlinkt. Diese gibt es aber normalerweise nur Windows, das von Anfang an mit deutscher Sprache installiert wurde.
Könnte ich machen, das würde aber dann noch viel mehr verwirren, wenn man beim Drop auf ein Archiv ein PNG erhält, und beim Drop auf einen Ordner ein JPG.Oder könnte man das automatisch machen wenn FileGroupDescriptorW+FileContents nicht zum Archiv hinzugefügt werden kann gibt es ein Fallback auf CF_HDROP?
Könnte ich machen, das würde aber dann noch viel mehr verwirren, wenn man beim Drop auf ein Archiv ein PNG erhält, und beim Drop auf einen Ordner ein JPG.Oder könnte man das automatisch machen wenn FileGroupDescriptorW+FileContents nicht zum Archiv hinzugefügt werden kann gibt es ein Fallback auf CF_HDROP?
Code: Select all
for /l %i in (1,1,1000) do mkdir "Ordner_%i"
Code: Select all
for /l %i in (1,1,1000) do mkdir "Ordner_%i"
Dieses Verhalten kann ich im Ordner "C:\Windows\WinSxS\" bei mir nicht nachvollziehen.Tahattmeruh wrote: 2025-04-22, 22:07 UTC Nur bei Ordner #36 bis #73 fängt das scrollen an wenn ich den Ordner wechsle.
Dieses Verhalten kann ich im Ordner "C:\Windows\WinSxS\" bei mir nicht nachvollziehen.Tahattmeruh wrote: 2025-04-22, 22:07 UTC Nur bei Ordner #36 bis #73 fängt das scrollen an wenn ich den Ordner wechsle.
Code: Select all
IntelCpHDCPSvc.exe
IntelCpHeciSvc.exe
Ich bin mir nicht sicher, ob das Overlay daherrührt?Code: Select all
IntelCpHDCPSvc.exe
IntelCpHeciSvc.exe
Ich bin mir nicht sicher, ob das Overlay daherrührt?Code: Select all
DirImageExt=jpg|jpeg|png|gif|svg|bmp
Code: Select all
DirImageExt=jpg|jpeg|png|gif|svg|bmp
robocopy C:\dir1 D:\dir2 a.txt b.doc c.jpg d.bmp e.txt /mov /ndl /nfl /njh /njs /xc /xn /xo |
robocopy C:\dir1 D:\dir2 a.txt b.doc c.jpg d.bmp e.txt /mov /ndl /nfl /njh /njs /xc /xn /xo |
Code: Select all
cd %USERPROFILE%
Code: Select all
cd %USERPROFILE%
]]>Help wrote: %|envvar|
Insert environment variable envvar in the parameters field. Using %envvar% directly isn't possible, because the % sign is already used for placeholders. Therefore this modified syntax needs to be used. The "command" field still uses the normal %envvar% field.
]]>Help wrote: %|envvar|
Insert environment variable envvar in the parameters field. Using %envvar% directly isn't possible, because the % sign is already used for placeholders. Therefore this modified syntax needs to be used. The "command" field still uses the normal %envvar% field.
Code: Select all
C:\Users\Mapaler\source\repos\SkyScan\Create User Folder\bin\Debug"
Code: Select all
C:\Users\Mapaler\source\repos\SkyScan\Create User Folder\bin\Debug"
Code: Select all
?%P%S
No extra quote is added, but when a folder contains a space, the argument will be in between quotes.]]>Help wrote:%Q Turn off automatic quotation marks around certain parameters like %P%N when the name contains a space. The user will then have to place them by himself.
Code: Select all
?%P%S
No extra quote is added, but when a folder contains a space, the argument will be in between quotes.]]>Help wrote:%Q Turn off automatic quotation marks around certain parameters like %P%N when the name contains a space. The user will then have to place them by himself.
Code: Select all
static void Main(string[] args)
{
MessageBox.Show(String.Join(" ", args));
}
Code: Select all
Private Declare Function GetCommandLineW Lib "kernel32" () As Long
Private Declare Function CommandLineToArgvW Lib "shell32.dll" (ByVal lpCmdLine As Long, pNumArgs As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal length As Long)
Private Declare Function LocalFree Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long
Function GetCommandLineArgs() As String()
Dim ptrCmdLine As Long
ptrCmdLine = GetCommandLineW()
Dim numArgs As Long
Dim ptrArgs As Long
ptrArgs = CommandLineToArgvW(ptrCmdLine, numArgs)
If ptrArgs = 0 Then Exit Function
Dim args() As String
ReDim args(numArgs - 1)
Dim i As Long, ptrArg As Long
For i = 0 To numArgs - 1
CopyMemory ptrArg, ByVal ptrArgs + i * 4, 4
args(i) = LPWSTRtoStr(ptrArg)
Next i
LocalFree ptrArgs
GetCommandLineArgs = args
End Function
Function LPWSTRtoStr(ByVal ptr As Long) As String
If ptr = 0 Then Exit Function
Dim length As Long
length = lstrlenW(ptr)
LPWSTRtoStr = String$(length, 0)
CopyMemory ByVal StrPtr(LPWSTRtoStr), ByVal ptr, length * 2
End Function
Sub Main()
Dim cml, i
cml = GetCommandLineArgs()
For i = LBound(cml) To UBound(cml)
MsgBox cml(i)
Next
End Sub
Code: Select all
console.log(process.argv);
process.stdin.setRawMode(true);
process.stdin.resume();
process.stdin.on('data', process.exit.bind(process, 0));
Code: Select all
import sys
import msvcrt
args = sys.argv
print(args)
msvcrt.getch()
Code: Select all
for (var i = 0; i < WScript.Arguments.length; i++) {
WScript.Echo(WScript.Arguments.item(i));
}
Code: Select all
static void Main(string[] args)
{
MessageBox.Show(String.Join(" ", args));
}
Code: Select all
Private Declare Function GetCommandLineW Lib "kernel32" () As Long
Private Declare Function CommandLineToArgvW Lib "shell32.dll" (ByVal lpCmdLine As Long, pNumArgs As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal length As Long)
Private Declare Function LocalFree Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long
Function GetCommandLineArgs() As String()
Dim ptrCmdLine As Long
ptrCmdLine = GetCommandLineW()
Dim numArgs As Long
Dim ptrArgs As Long
ptrArgs = CommandLineToArgvW(ptrCmdLine, numArgs)
If ptrArgs = 0 Then Exit Function
Dim args() As String
ReDim args(numArgs - 1)
Dim i As Long, ptrArg As Long
For i = 0 To numArgs - 1
CopyMemory ptrArg, ByVal ptrArgs + i * 4, 4
args(i) = LPWSTRtoStr(ptrArg)
Next i
LocalFree ptrArgs
GetCommandLineArgs = args
End Function
Function LPWSTRtoStr(ByVal ptr As Long) As String
If ptr = 0 Then Exit Function
Dim length As Long
length = lstrlenW(ptr)
LPWSTRtoStr = String$(length, 0)
CopyMemory ByVal StrPtr(LPWSTRtoStr), ByVal ptr, length * 2
End Function
Sub Main()
Dim cml, i
cml = GetCommandLineArgs()
For i = LBound(cml) To UBound(cml)
MsgBox cml(i)
Next
End Sub
Code: Select all
console.log(process.argv);
process.stdin.setRawMode(true);
process.stdin.resume();
process.stdin.on('data', process.exit.bind(process, 0));
Code: Select all
import sys
import msvcrt
args = sys.argv
print(args)
msvcrt.getch()
Code: Select all
for (var i = 0; i < WScript.Arguments.length; i++) {
WScript.Echo(WScript.Arguments.item(i));
}
Code: Select all
YourProgram.exe "C:\path to folder"
Code: Select all
YourProgram.exe "C:\path to folder\\"
Code: Select all
YourProgram.exe "C:\path to folder"
Code: Select all
YourProgram.exe "C:\path to folder\\"
https://learn.microsoft.com/en-us/cpp/cpp/main-function-command-line-args?view=msvc-160#parsing-c-command-line-argumentsSpecial Cases using backslash escape
To save a directory path with a trailing backslash (\) requires adding a second backslash to 'escape the escape'
so for example instead of "C:\My Docs\" use "C:\My Docs\\"
https://users.rust-lang.org/t/interpret-the-path-enclosed-in-double-quotes-on-windows/38173/11A double quote mark preceded by a backslash (") is interpreted as a literal double quote mark (").
https://learn.microsoft.com/en-us/cpp/cpp/main-function-command-line-args?view=msvc-160#parsing-c-command-line-argumentsSpecial Cases using backslash escape
To save a directory path with a trailing backslash (\) requires adding a second backslash to 'escape the escape'
so for example instead of "C:\My Docs\" use "C:\My Docs\\"
https://users.rust-lang.org/t/interpret-the-path-enclosed-in-double-quotes-on-windows/38173/11A double quote mark preceded by a backslash (") is interpreted as a literal double quote mark (").
When the parent entry ".." is selected, %S produces no result, leaving the path with a trailing backslash.Help wrote:%P causes the source path to be inserted into the command line, including a backslash (\) at the end.
According to Windows rules, the way arguments are parsed is left entirely up to the program being launched. This makes it messy and inconsistent. Windows programs also don’t use a consistent way of parsing arguments. The CommandLineToArgvW API and similar functions in programming languages are just a possible way to implement basic argument parsing. They are not a Windows rule.Mapaler wrote: 2025-04-02, 08:27 UTC I think any program that uses the CommandLineToArgv Win32API will have this problem, because that's the Windows parsing logic.
When the parent entry ".." is selected, %S produces no result, leaving the path with a trailing backslash.Help wrote:%P causes the source path to be inserted into the command line, including a backslash (\) at the end.
According to Windows rules, the way arguments are parsed is left entirely up to the program being launched. This makes it messy and inconsistent. Windows programs also don’t use a consistent way of parsing arguments. The CommandLineToArgvW API and similar functions in programming languages are just a possible way to implement basic argument parsing. They are not a Windows rule.Mapaler wrote: 2025-04-02, 08:27 UTC I think any program that uses the CommandLineToArgv Win32API will have this problem, because that's the Windows parsing logic.
When the parent entry ".." is selected, %S produces no result, leaving the path with a trailing backslash.Help wrote:%P causes the source path to be inserted into the command line, including a backslash (\) at the end.
How do I get %P%S in the "folder" and ".." to keep the same result?white wrote: 2025-04-02, 12:01 UTC The parent entry in TC is handled in a special way. It sometimes means parent folder, and other times current folder. When %P is directly followed by %S, %N, or similar placeholders that turn out to be empty (when the parent entry is selected), it might be useful if TC would remove the trailing backslash from %P. Alternatively, it might be useful if TC would return the value ".." or "." for the %S, %N, or similar placeholders.
When the parent entry ".." is selected, %S produces no result, leaving the path with a trailing backslash.Help wrote:%P causes the source path to be inserted into the command line, including a backslash (\) at the end.
How do I get %P%S in the "folder" and ".." to keep the same result?white wrote: 2025-04-02, 12:01 UTC The parent entry in TC is handled in a special way. It sometimes means parent folder, and other times current folder. When %P is directly followed by %S, %N, or similar placeholders that turn out to be empty (when the parent entry is selected), it might be useful if TC would remove the trailing backslash from %P. Alternatively, it might be useful if TC would return the value ".." or "." for the %S, %N, or similar placeholders.
You've already been advised to use %Q.]]>Mapaler wrote: 2025-04-02, 12:30 UTC Not all software takes into account removing quotation marks at the end.
You've already been advised to use %Q.]]>Mapaler wrote: 2025-04-02, 12:30 UTC Not all software takes into account removing quotation marks at the end.
Thank you!
Thank you!
Code: Select all
[em_test_tc_params_ps1]
cmd=pwsh -c "%commander_path%\Plugins\app\PowerShell\echoParams.ps1"
param=%WL %N %P %P%N %S %P%S %T %C1 %C2
Code: Select all
if ($pwd){
'current and parent path'|Write-Host -f DarkGray;$pwd|Write-Host;$pwd|split-path} else {
'current directory cannot be detected...'|Write-Host -f Red}
''
if (-not($args)){
'No Total Commander arguments have been passed...'|Write-Host -f Red}
if ($args){
'Total Commander arguments breakdown...'|Write-Host -f Green
''
'first parameter as %WL (list file and its contents)'|Write-Host -f Yellow
$args[0]|Write-Host -f Cyan
foreach ($line in [IO.File]::ReadLines($args[0])){$line|Write-Host -f DarkCyan}
''
'raw $args array'|Write-Host -f Yellow
$args -join ' '|Write-Host -f DarkGray
''
'parameters by individual indexes [0]...[8]'|Write-Host -f Yellow
'[0] %WL : {0}' -f $args[0]
'[1] %N : {0}' -f $args[1]
'[2] %P : {0}' -f $args[2]
'[3] %P%N : {0}' -f $args[3]
'[4] %S : {0}' -f $args[4]
'[5] %P%S : {0}' -f $args[5]
'[6] %T : {0}' -f $args[6]
'[7] %C1 : {0}' -f $args[7]
'[8] %C2 : {0}' -f $args[8]
''
'all {0} entries from $args array (recognized as separate items)' -f $args.count|Write-Host -f Yellow
$index = 0
foreach ($param in $args){
'{0,-8:[0]} : {1}' -f $index,$param;$index++}
}
''
pause
Code: Select all
[em_test_tc_params_ps1]
cmd=pwsh -c "%commander_path%\Plugins\app\PowerShell\echoParams.ps1"
param=%WL %N %P %P%N %S %P%S %T %C1 %C2
Code: Select all
if ($pwd){
'current and parent path'|Write-Host -f DarkGray;$pwd|Write-Host;$pwd|split-path} else {
'current directory cannot be detected...'|Write-Host -f Red}
''
if (-not($args)){
'No Total Commander arguments have been passed...'|Write-Host -f Red}
if ($args){
'Total Commander arguments breakdown...'|Write-Host -f Green
''
'first parameter as %WL (list file and its contents)'|Write-Host -f Yellow
$args[0]|Write-Host -f Cyan
foreach ($line in [IO.File]::ReadLines($args[0])){$line|Write-Host -f DarkCyan}
''
'raw $args array'|Write-Host -f Yellow
$args -join ' '|Write-Host -f DarkGray
''
'parameters by individual indexes [0]...[8]'|Write-Host -f Yellow
'[0] %WL : {0}' -f $args[0]
'[1] %N : {0}' -f $args[1]
'[2] %P : {0}' -f $args[2]
'[3] %P%N : {0}' -f $args[3]
'[4] %S : {0}' -f $args[4]
'[5] %P%S : {0}' -f $args[5]
'[6] %T : {0}' -f $args[6]
'[7] %C1 : {0}' -f $args[7]
'[8] %C2 : {0}' -f $args[8]
''
'all {0} entries from $args array (recognized as separate items)' -f $args.count|Write-Host -f Yellow
$index = 0
foreach ($param in $args){
'{0,-8:[0]} : {1}' -f $index,$param;$index++}
}
''
pause
Code: Select all
GetTotalCommanderTabs(ByRef winId) {
; Creates user command (if necessary) in usercmd.ini
; and uses it to request the current tabs file.
; If the second panel is enabled, file contains tabs from all panels,
; otherwise file contains tabs from the active panel
static TABS_RESULT, CONFIG, COMMAND
static created := false
if created
return TABS_RESULT
; Search for TC main directory
static APPDATA_PATH := A_AppData "\GHISLER\"
if !FileExist(APPDATA_PATH) {
static PATH
WinGet, PATH, ProcessPath, ahk_id %winId%
; Remove exe name
PATH := SubStr(PATH, 1, InStr(PATH, "\",, -12))
APPDATA_PATH := PATH
}
TABS_RESULT := APPDATA_PATH "Tabs.tab"
CONFIG := APPDATA_PATH "usercmd.ini"
COMMAND := "EM_SaveAllTabs"
; Check and create user command
loop, 4 {
; Read the contents of the config until it appears or the loop ends with an error
IniRead, _section, % CONFIG, % COMMAND
if (_section && _section != "ERROR") {
created := true
return TABS_RESULT
}
; Set normal attributes (write access)
FileSetAttrib, n, % APPDATA_PATH
FileSetAttrib, n, % CONFIG
sleep, 20 * A_Index
; Create new section
FileAppend,
(LTrim
# Please dont add commands with the same name
[%COMMAND%]
cmd=SaveTabs2
param=`"%TABS_RESULT%`"
), % CONFIG
sleep, 50 * A_Index
}
return LogError(Exception("Unable to create configuration", "Total Commander config", CONFIG " doesnt exist and cannot be created. Create it manually in the " APPDATA_PATH))
}
Code: Select all
GetTotalCommanderPaths(ByRef winId) {
; Requests a file with current tabs and analyzes it.
; Searches for the active tab using the "activetab" parameter
global Paths
try {
_tabs := GetTotalCommanderTabs(winId)
try FileDelete, % _tabs
TotalCommanderUserCommand(winId, "EM_SaveAllTabs")
loop, 600 {
if FileExist(_tabs) {
_paths := []
; Tabs index starts with 0, array index starts with 1
_active := _last := 0
Loop, read, % _tabs
{
; Omit the InStr key and SubStr from value position
if (_pos := InStr(A_LoopReadLine, "path=")) {
_paths.push(SubStr(A_LoopReadLine, _pos + 5))
}
if (_num := InStr(A_LoopReadLine, "activetab=")) {
; Skip next active tab by saving last
_active := _last
_last := SubStr(A_LoopReadLine, _num + 10)
}
}
; Push the active tab to the global array first
Paths.push(_paths[_active + 1])
; Remove duplicate and add the remaining tabs
_paths.removeAt(_active + 1)
Paths.push(_paths*)
return
}
sleep, 20
}
return LogError(Exception("Unable to access tabs", "Total Commander tabs", "Close Total Commander. The architecture of the script and Total Commander must be the same: " . (A_PtrSize * 8)))
} catch _error {
LogError(_error)
}
}
Code: Select all
GetTotalCommanderTabs(ByRef winId) {
; Creates user command (if necessary) in usercmd.ini
; and uses it to request the current tabs file.
; If the second panel is enabled, file contains tabs from all panels,
; otherwise file contains tabs from the active panel
static TABS_RESULT, CONFIG, COMMAND
static created := false
if created
return TABS_RESULT
; Search for TC main directory
static APPDATA_PATH := A_AppData "\GHISLER\"
if !FileExist(APPDATA_PATH) {
static PATH
WinGet, PATH, ProcessPath, ahk_id %winId%
; Remove exe name
PATH := SubStr(PATH, 1, InStr(PATH, "\",, -12))
APPDATA_PATH := PATH
}
TABS_RESULT := APPDATA_PATH "Tabs.tab"
CONFIG := APPDATA_PATH "usercmd.ini"
COMMAND := "EM_SaveAllTabs"
; Check and create user command
loop, 4 {
; Read the contents of the config until it appears or the loop ends with an error
IniRead, _section, % CONFIG, % COMMAND
if (_section && _section != "ERROR") {
created := true
return TABS_RESULT
}
; Set normal attributes (write access)
FileSetAttrib, n, % APPDATA_PATH
FileSetAttrib, n, % CONFIG
sleep, 20 * A_Index
; Create new section
FileAppend,
(LTrim
# Please dont add commands with the same name
[%COMMAND%]
cmd=SaveTabs2
param=`"%TABS_RESULT%`"
), % CONFIG
sleep, 50 * A_Index
}
return LogError(Exception("Unable to create configuration", "Total Commander config", CONFIG " doesnt exist and cannot be created. Create it manually in the " APPDATA_PATH))
}
Code: Select all
GetTotalCommanderPaths(ByRef winId) {
; Requests a file with current tabs and analyzes it.
; Searches for the active tab using the "activetab" parameter
global Paths
try {
_tabs := GetTotalCommanderTabs(winId)
try FileDelete, % _tabs
TotalCommanderUserCommand(winId, "EM_SaveAllTabs")
loop, 600 {
if FileExist(_tabs) {
_paths := []
; Tabs index starts with 0, array index starts with 1
_active := _last := 0
Loop, read, % _tabs
{
; Omit the InStr key and SubStr from value position
if (_pos := InStr(A_LoopReadLine, "path=")) {
_paths.push(SubStr(A_LoopReadLine, _pos + 5))
}
if (_num := InStr(A_LoopReadLine, "activetab=")) {
; Skip next active tab by saving last
_active := _last
_last := SubStr(A_LoopReadLine, _num + 10)
}
}
; Push the active tab to the global array first
Paths.push(_paths[_active + 1])
; Remove duplicate and add the remaining tabs
_paths.removeAt(_active + 1)
Paths.push(_paths*)
return
}
sleep, 20
}
return LogError(Exception("Unable to access tabs", "Total Commander tabs", "Close Total Commander. The architecture of the script and Total Commander must be the same: " . (A_PtrSize * 8)))
} catch _error {
LogError(_error)
}
}
]]>Help wrote:[Configuration]
ReplacePhotoApp=1 Replaces the Windows Photo App (tile app) by the Windows Photo Viewer (desktop program) when double clicking an image file.
On Windows 10 and newer, this is ignored unless PhotoAppFilter starts with a dash
PhotoAppFilter= Set to - to disable opening photos app with list of images in same folder
PhotoAppMode=0 Override how the Microsoft Photos app is called to load multiple images:
0: automatic based on photo app version number
1: old method (LaunchFileWithOptionsAsync)
2: ms-photos:viewer?fileName=name with URL-encoded name,
3: ms-photos:viewer?fileName=name without encoding the name
-1: open photos app with only one file
]]>Help wrote:[Configuration]
ReplacePhotoApp=1 Replaces the Windows Photo App (tile app) by the Windows Photo Viewer (desktop program) when double clicking an image file.
On Windows 10 and newer, this is ignored unless PhotoAppFilter starts with a dash
PhotoAppFilter= Set to - to disable opening photos app with list of images in same folder
PhotoAppMode=0 Override how the Microsoft Photos app is called to load multiple images:
0: automatic based on photo app version number
1: old method (LaunchFileWithOptionsAsync)
2: ms-photos:viewer?fileName=name with URL-encoded name,
3: ms-photos:viewer?fileName=name without encoding the name
-1: open photos app with only one file
Code: Select all
%SystemRoot%\system32\netsh.exe advfirewall set currentprofile state on
Code: Select all
%SystemRoot%\system32\netsh.exe advfirewall set currentprofile state on
Code: Select all
TOTALCMD#BAR#DATA
*%SystemRoot%\system32\netsh.exe advfirewall set currentprofile state off
FirewallControlPanel.dll,1
-1
Code: Select all
TOTALCMD#BAR#DATA
*%SystemRoot%\system32\netsh.exe advfirewall set currentprofile state off
FirewallControlPanel.dll,1
-1
Code: Select all
TOTALCMD#BAR#DATA
*%SystemRoot%\system32\netsh.exe
advfirewall set currentprofile state off
%SystemRoot%\system32\imageres.dll,100
Firewall off
1
-1
Code: Select all
TOTALCMD#BAR#DATA
*%SystemRoot%\system32\netsh.exe
advfirewall set currentprofile state on
%SystemRoot%\system32\imageres.dll,101
Firewall on
1
-1
Code: Select all
TOTALCMD#BAR#DATA
*%SystemRoot%\system32\netsh.exe
advfirewall set currentprofile state off
%SystemRoot%\system32\imageres.dll,100
Firewall off
1
-1
Code: Select all
TOTALCMD#BAR#DATA
*%SystemRoot%\system32\netsh.exe
advfirewall set currentprofile state on
%SystemRoot%\system32\imageres.dll,101
Firewall on
1
-1
Code: Select all
9=%COMMANDER_PATH%\PLUGINS\wlx\HTMLView\HtmlView.wlx
9_detect="EXT="" | FORCE"
Code: Select all
9=%COMMANDER_PATH%\PLUGINS\wlx\HTMLView\HtmlView.wlx
9_detect="EXT="" | FORCE"
[PackerPlugins] lstW=31,%COMMANDER_PATH%\Plugins\wcx\diskdirW\diskdirW.wcx lstE=31,%COMMANDER_PATH%\Plugins\wcx\DiskDirExtended\DiskDirExtended.wcx |
[PackerPlugins] lstW=31,%COMMANDER_PATH%\Plugins\wcx\diskdirW\diskdirW.wcx lstE=31,%COMMANDER_PATH%\Plugins\wcx\DiskDirExtended\DiskDirExtended.wcx |
I remember wondering that myself.]]>Wonder why that is not the default setting?
I remember wondering that myself.]]>Wonder why that is not the default setting?
21 = 1+4+16Plugin capabilities number is the sum of the following:
1: Can create new archives.
2: Can modify existing archives.
4: Can handle multiple files in one archive.
8: Can delete files from archive.
16: Supports the options dialog.
32: Supports packing in memory.
64: Detects archive type by content.
128: Allows searching for text in archives.
256: Don't open with Enter, only with Ctrl+PgDn.
512: Supports encryption.
21 = 1+4+16Plugin capabilities number is the sum of the following:
1: Can create new archives.
2: Can modify existing archives.
4: Can handle multiple files in one archive.
8: Can delete files from archive.
16: Supports the options dialog.
32: Supports packing in memory.
64: Detects archive type by content.
128: Allows searching for text in archives.
256: Don't open with Enter, only with Ctrl+PgDn.
512: Supports encryption.
21 = 1+4+16Plugin capabilities number is the sum of the following:
....
21 = 1+4+16Plugin capabilities number is the sum of the following:
....
Code: Select all
hh.exe "$env:commander_path\TOTALCMD.CHM::inisettings3.htm"
Code: Select all
hh.exe "$env:commander_path\TOTALCMD.CHM::inisettings3.htm"
I think only the author knows about the advantages of this fix. It's unlikely that this will change anything for you.DiskDirExtended.txt wrote:Changelog:
1.68
updated ISO library
I think only the author knows about the advantages of this fix. It's unlikely that this will change anything for you.DiskDirExtended.txt wrote:Changelog:
1.68
updated ISO library
No. In the plugin folder, VirtualPanel.lst is created with the entire list, but the columns inside are formed differently. You can do whatever you want with this file.snop wrote: 2025-04-12, 15:35 UTC except that it's not something that I can save as a file, share, export etc, it's in my tcmd session basically, correct ?
No. In the plugin folder, VirtualPanel.lst is created with the entire list, but the columns inside are formed differently. You can do whatever you want with this file.snop wrote: 2025-04-12, 15:35 UTC except that it's not something that I can save as a file, share, export etc, it's in my tcmd session basically, correct ?
Do you have confidence now to migrate to the 1.43 branch? Or do you want to wait till November 2025 when the legacy 1.39 branch reaches end-of-life?]]>white wrote: 2024-12-23, 10:53 UTC MediaWiki maintenance release 1.39.11 was released recently. Not only that, but this branch has become a legacy version (still supported though). The new LTS (Long Term Support) version is now 1.43. See https://www.mediawiki.org/wiki/Version_lifecycle
I suggest to wait a couple of weeks, then update to version 1.39.11, then wait a couple weeks again and then upgrade to version 1.43.
Do you have confidence now to migrate to the 1.43 branch? Or do you want to wait till November 2025 when the legacy 1.39 branch reaches end-of-life?]]>white wrote: 2024-12-23, 10:53 UTC MediaWiki maintenance release 1.39.11 was released recently. Not only that, but this branch has become a legacy version (still supported though). The new LTS (Long Term Support) version is now 1.43. See https://www.mediawiki.org/wiki/Version_lifecycle
I suggest to wait a couple of weeks, then update to version 1.39.11, then wait a couple weeks again and then upgrade to version 1.43.
You can just feed it into a panel showing custom columns with the details you want.Hirszowski wrote: 2025-04-12, 22:21 UTC i.e. that command "feed to listbox" shows the files in a window showing file details rather than only their paths and names?
You can just feed it into a panel showing custom columns with the details you want.Hirszowski wrote: 2025-04-12, 22:21 UTC i.e. that command "feed to listbox" shows the files in a window showing file details rather than only their paths and names?
You can just feed it into a panel showing custom columns with the details you want.Hirszowski wrote: 2025-04-12, 22:21 UTC i.e. that command "feed to listbox" shows the files in a window showing file details rather than only their paths and names?
You can just feed it into a panel showing custom columns with the details you want.Hirszowski wrote: 2025-04-12, 22:21 UTC i.e. that command "feed to listbox" shows the files in a window showing file details rather than only their paths and names?
You have to make a Custom Columns View first - it could show the same as the Full View - see: https://tcmd.madsenworld.dk/customlikefull.pngI cannot find an option how to "feed it into a panel showing custom columns with the details you want"
You have to make a Custom Columns View first - it could show the same as the Full View - see: https://tcmd.madsenworld.dk/customlikefull.pngI cannot find an option how to "feed it into a panel showing custom columns with the details you want"
Yes you can set the colors for comments using the "Define colors by file type" and the tc file content plugin:Was this implemented??
Yes you can set the colors for comments using the "Define colors by file type" and the tc file content plugin:Was this implemented??
Code: Select all
komentatuak_SearchFor=
komentatuak_SearchIn=
komentatuak_SearchText=
komentatuak_SearchFlags=0|002002000020|||||||||0000|||
komentatuak_Plugin=tc.comment != ""
Code: Select all
ColorFilter1=>komentatuak
ColorFilter1Color=xxxxx
Code: Select all
komentatuak_SearchFor=
komentatuak_SearchIn=
komentatuak_SearchText=
komentatuak_SearchFlags=0|002002000020|||||||||0000|||
komentatuak_Plugin=tc.comment != ""
Code: Select all
ColorFilter1=>komentatuak
ColorFilter1Color=xxxxx
Code: Select all
Microsoft (R) Windows Debugger Version 6.12.0002.633 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [TOTALCMD64.EXE_250416_101839.dmp]
User Mini Dump File with Full Memory: Only application data is available
WARNING: Minidump contains unknown stream type 0x15
WARNING: Minidump contains unknown stream type 0x16
Comment: '
*** "C:\dump\ProcDump\procdump64.exe" -accepteula -ma -j "c:\dumps" 42968 1672 000000000FF30000
*** Just-In-Time debugger. PID: 42968 Event Handle: 1672 JIT Context: .jdinfo 0xff30000'
Symbol search path is: srv*D:\SYMBOLS*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows 7 Version 22621 MP (8 procs) Free x64
Product: WinNt, suite: SingleUserTS
Machine Name:
Debug session time: Wed Apr 16 19:18:39.000 2025 (UTC + 2:00)
System Uptime: 1 days 2:20:44.800
Process Uptime: 0 days 0:00:02.000
............................................................
This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(a7d8.3270): Access violation - code c0000005 (first/second chance not available)
*** WARNING: Unable to verify timestamp for TOTALCMD64.EXE
*** ERROR: Module load completed but symbols could not be loaded for TOTALCMD64.EXE
TOTALCMD64+0x10038:
00000000`00410038 894df8 mov dword ptr [rbp-8],ecx ss:00000000`00e70ff8=????????
0:000> !analyze -v
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
*** ERROR: Symbol file could not be found. Defaulted to export symbols for dgapi64.dll -
Failed calling InternetOpenUrl, GLE=12029
FAULTING_IP:
TOTALCMD64+10038
00000000`00410038 894df8 mov dword ptr [rbp-8],ecx
EXCEPTION_RECORD: ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 0000000000410038 (TOTALCMD64+0x0000000000010038)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 0000000000000001
Parameter[1]: 0000000000e70ff8
Attempt to write to address 0000000000e70ff8
DEFAULT_BUCKET_ID: INVALID_STACK_ACCESS
PROCESS_NAME: TOTALCMD64.EXE
ERROR_CODE: (NTSTATUS) 0xc0000005 - Die Anweisung in 0x%p verwies auf Arbeitsspeicher bei 0x%p. Der Vorgang %s konnte im Arbeitsspeicher nicht durchgef hrt werden.
EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - Die Anweisung in 0x%p verwies auf Arbeitsspeicher bei 0x%p. Der Vorgang %s konnte im Arbeitsspeicher nicht durchgef hrt werden.
EXCEPTION_PARAMETER1: 0000000000000001
EXCEPTION_PARAMETER2: 0000000000e70ff8
WRITE_ADDRESS: 0000000000e70ff8
FOLLOWUP_IP:
TOTALCMD64+10038
00000000`00410038 894df8 mov dword ptr [rbp-8],ecx
MOD_LIST: <ANALYSIS/>
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
FAULTING_THREAD: 0000000000003270
PRIMARY_PROBLEM_CLASS: INVALID_STACK_ACCESS
BUGCHECK_STR: APPLICATION_FAULT_INVALID_STACK_ACCESS_INVALID_POINTER_WRITE
LAST_CONTROL_TRANSFER: from 0000000000000000 to 0000000000410038
STACK_TEXT:
00000000`00e70fb0 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : TOTALCMD64+0x10038
SYMBOL_STACK_INDEX: 0
SYMBOL_NAME: TOTALCMD64+10038
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: TOTALCMD64
IMAGE_NAME: TOTALCMD64.EXE
DEBUG_FLR_IMAGE_TIMESTAMP: 0
STACK_COMMAND: dt ntdll!LdrpLastDllInitializer BaseDllName ; dt ntdll!LdrpFailureData ; ~0s; .ecxr ; kb
FAILURE_BUCKET_ID: INVALID_STACK_ACCESS_c0000005_TOTALCMD64.EXE!Unknown
BUCKET_ID: X64_APPLICATION_FAULT_INVALID_STACK_ACCESS_INVALID_POINTER_WRITE_TOTALCMD64+10038
WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/TOTALCMD64_EXE/11_51_0_0/_______0/TOTALCMD64_EXE/11_51_0_0/_______0/c0000005/00010038.htm?Retriage=1
Followup: MachineOwner
---------
Code: Select all
Microsoft (R) Windows Debugger Version 6.12.0002.633 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [TOTALCMD64.EXE_250416_101841.dmp]
User Mini Dump File with Full Memory: Only application data is available
WARNING: Minidump contains unknown stream type 0x15
WARNING: Minidump contains unknown stream type 0x16
Comment: '
*** "C:\dump\ProcDump\procdump64.exe" -accepteula -ma -j "c:\dumps" 42968 1896 000000000FF30000
*** Just-In-Time debugger. PID: 42968 Event Handle: 1896 JIT Context: .jdinfo 0xff30000'
Symbol search path is: srv*D:\SYMBOLS*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows 7 Version 22621 MP (8 procs) Free x64
Product: WinNt, suite: SingleUserTS
Machine Name:
Debug session time: Wed Apr 16 19:18:41.000 2025 (UTC + 2:00)
System Uptime: 1 days 2:20:46.486
Process Uptime: 0 days 0:00:04.000
............................................................
This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(a7d8.3270): Access violation - code c0000005 (first/second chance not available)
*** WARNING: Unable to verify timestamp for TOTALCMD64.EXE
*** ERROR: Module load completed but symbols could not be loaded for TOTALCMD64.EXE
TOTALCMD64+0x10038:
00000000`00410038 894df8 mov dword ptr [rbp-8],ecx ss:00000000`00e70ff8=????????
0:000> !analyze -v
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
*** ERROR: Symbol file could not be found. Defaulted to export symbols for dgapi64.dll -
Failed calling InternetOpenUrl, GLE=12029
FAULTING_IP:
TOTALCMD64+10038
00000000`00410038 894df8 mov dword ptr [rbp-8],ecx
EXCEPTION_RECORD: ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 0000000000410038 (TOTALCMD64+0x0000000000010038)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 0000000000000001
Parameter[1]: 0000000000e70ff8
Attempt to write to address 0000000000e70ff8
DEFAULT_BUCKET_ID: INVALID_STACK_ACCESS
PROCESS_NAME: TOTALCMD64.EXE
ERROR_CODE: (NTSTATUS) 0xc0000005 - Die Anweisung in 0x%p verwies auf Arbeitsspeicher bei 0x%p. Der Vorgang %s konnte im Arbeitsspeicher nicht durchgef hrt werden.
EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - Die Anweisung in 0x%p verwies auf Arbeitsspeicher bei 0x%p. Der Vorgang %s konnte im Arbeitsspeicher nicht durchgef hrt werden.
EXCEPTION_PARAMETER1: 0000000000000001
EXCEPTION_PARAMETER2: 0000000000e70ff8
WRITE_ADDRESS: 0000000000e70ff8
FOLLOWUP_IP:
TOTALCMD64+10038
00000000`00410038 894df8 mov dword ptr [rbp-8],ecx
MOD_LIST: <ANALYSIS/>
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
FAULTING_THREAD: 0000000000003270
PRIMARY_PROBLEM_CLASS: INVALID_STACK_ACCESS
BUGCHECK_STR: APPLICATION_FAULT_INVALID_STACK_ACCESS_INVALID_POINTER_WRITE
LAST_CONTROL_TRANSFER: from 0000000000000000 to 0000000000410038
STACK_TEXT:
00000000`00e70fb0 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : TOTALCMD64+0x10038
SYMBOL_STACK_INDEX: 0
SYMBOL_NAME: TOTALCMD64+10038
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: TOTALCMD64
IMAGE_NAME: TOTALCMD64.EXE
DEBUG_FLR_IMAGE_TIMESTAMP: 0
STACK_COMMAND: dt ntdll!LdrpLastDllInitializer BaseDllName ; dt ntdll!LdrpFailureData ; ~0s; .ecxr ; kb
FAILURE_BUCKET_ID: INVALID_STACK_ACCESS_c0000005_TOTALCMD64.EXE!Unknown
BUCKET_ID: X64_APPLICATION_FAULT_INVALID_STACK_ACCESS_INVALID_POINTER_WRITE_TOTALCMD64+10038
WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/TOTALCMD64_EXE/11_51_0_0/_______0/TOTALCMD64_EXE/11_51_0_0/_______0/c0000005/00010038.htm?Retriage=1
Followup: MachineOwner
---------
Code: Select all
Microsoft (R) Windows Debugger Version 6.12.0002.633 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [TOTALCMD64.EXE_250416_101839.dmp]
User Mini Dump File with Full Memory: Only application data is available
WARNING: Minidump contains unknown stream type 0x15
WARNING: Minidump contains unknown stream type 0x16
Comment: '
*** "C:\dump\ProcDump\procdump64.exe" -accepteula -ma -j "c:\dumps" 42968 1672 000000000FF30000
*** Just-In-Time debugger. PID: 42968 Event Handle: 1672 JIT Context: .jdinfo 0xff30000'
Symbol search path is: srv*D:\SYMBOLS*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows 7 Version 22621 MP (8 procs) Free x64
Product: WinNt, suite: SingleUserTS
Machine Name:
Debug session time: Wed Apr 16 19:18:39.000 2025 (UTC + 2:00)
System Uptime: 1 days 2:20:44.800
Process Uptime: 0 days 0:00:02.000
............................................................
This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(a7d8.3270): Access violation - code c0000005 (first/second chance not available)
*** WARNING: Unable to verify timestamp for TOTALCMD64.EXE
*** ERROR: Module load completed but symbols could not be loaded for TOTALCMD64.EXE
TOTALCMD64+0x10038:
00000000`00410038 894df8 mov dword ptr [rbp-8],ecx ss:00000000`00e70ff8=????????
0:000> !analyze -v
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
*** ERROR: Symbol file could not be found. Defaulted to export symbols for dgapi64.dll -
Failed calling InternetOpenUrl, GLE=12029
FAULTING_IP:
TOTALCMD64+10038
00000000`00410038 894df8 mov dword ptr [rbp-8],ecx
EXCEPTION_RECORD: ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 0000000000410038 (TOTALCMD64+0x0000000000010038)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 0000000000000001
Parameter[1]: 0000000000e70ff8
Attempt to write to address 0000000000e70ff8
DEFAULT_BUCKET_ID: INVALID_STACK_ACCESS
PROCESS_NAME: TOTALCMD64.EXE
ERROR_CODE: (NTSTATUS) 0xc0000005 - Die Anweisung in 0x%p verwies auf Arbeitsspeicher bei 0x%p. Der Vorgang %s konnte im Arbeitsspeicher nicht durchgef hrt werden.
EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - Die Anweisung in 0x%p verwies auf Arbeitsspeicher bei 0x%p. Der Vorgang %s konnte im Arbeitsspeicher nicht durchgef hrt werden.
EXCEPTION_PARAMETER1: 0000000000000001
EXCEPTION_PARAMETER2: 0000000000e70ff8
WRITE_ADDRESS: 0000000000e70ff8
FOLLOWUP_IP:
TOTALCMD64+10038
00000000`00410038 894df8 mov dword ptr [rbp-8],ecx
MOD_LIST: <ANALYSIS/>
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
FAULTING_THREAD: 0000000000003270
PRIMARY_PROBLEM_CLASS: INVALID_STACK_ACCESS
BUGCHECK_STR: APPLICATION_FAULT_INVALID_STACK_ACCESS_INVALID_POINTER_WRITE
LAST_CONTROL_TRANSFER: from 0000000000000000 to 0000000000410038
STACK_TEXT:
00000000`00e70fb0 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : TOTALCMD64+0x10038
SYMBOL_STACK_INDEX: 0
SYMBOL_NAME: TOTALCMD64+10038
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: TOTALCMD64
IMAGE_NAME: TOTALCMD64.EXE
DEBUG_FLR_IMAGE_TIMESTAMP: 0
STACK_COMMAND: dt ntdll!LdrpLastDllInitializer BaseDllName ; dt ntdll!LdrpFailureData ; ~0s; .ecxr ; kb
FAILURE_BUCKET_ID: INVALID_STACK_ACCESS_c0000005_TOTALCMD64.EXE!Unknown
BUCKET_ID: X64_APPLICATION_FAULT_INVALID_STACK_ACCESS_INVALID_POINTER_WRITE_TOTALCMD64+10038
WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/TOTALCMD64_EXE/11_51_0_0/_______0/TOTALCMD64_EXE/11_51_0_0/_______0/c0000005/00010038.htm?Retriage=1
Followup: MachineOwner
---------
Code: Select all
Microsoft (R) Windows Debugger Version 6.12.0002.633 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [TOTALCMD64.EXE_250416_101841.dmp]
User Mini Dump File with Full Memory: Only application data is available
WARNING: Minidump contains unknown stream type 0x15
WARNING: Minidump contains unknown stream type 0x16
Comment: '
*** "C:\dump\ProcDump\procdump64.exe" -accepteula -ma -j "c:\dumps" 42968 1896 000000000FF30000
*** Just-In-Time debugger. PID: 42968 Event Handle: 1896 JIT Context: .jdinfo 0xff30000'
Symbol search path is: srv*D:\SYMBOLS*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows 7 Version 22621 MP (8 procs) Free x64
Product: WinNt, suite: SingleUserTS
Machine Name:
Debug session time: Wed Apr 16 19:18:41.000 2025 (UTC + 2:00)
System Uptime: 1 days 2:20:46.486
Process Uptime: 0 days 0:00:04.000
............................................................
This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(a7d8.3270): Access violation - code c0000005 (first/second chance not available)
*** WARNING: Unable to verify timestamp for TOTALCMD64.EXE
*** ERROR: Module load completed but symbols could not be loaded for TOTALCMD64.EXE
TOTALCMD64+0x10038:
00000000`00410038 894df8 mov dword ptr [rbp-8],ecx ss:00000000`00e70ff8=????????
0:000> !analyze -v
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
*** ERROR: Symbol file could not be found. Defaulted to export symbols for dgapi64.dll -
Failed calling InternetOpenUrl, GLE=12029
FAULTING_IP:
TOTALCMD64+10038
00000000`00410038 894df8 mov dword ptr [rbp-8],ecx
EXCEPTION_RECORD: ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 0000000000410038 (TOTALCMD64+0x0000000000010038)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 0000000000000001
Parameter[1]: 0000000000e70ff8
Attempt to write to address 0000000000e70ff8
DEFAULT_BUCKET_ID: INVALID_STACK_ACCESS
PROCESS_NAME: TOTALCMD64.EXE
ERROR_CODE: (NTSTATUS) 0xc0000005 - Die Anweisung in 0x%p verwies auf Arbeitsspeicher bei 0x%p. Der Vorgang %s konnte im Arbeitsspeicher nicht durchgef hrt werden.
EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - Die Anweisung in 0x%p verwies auf Arbeitsspeicher bei 0x%p. Der Vorgang %s konnte im Arbeitsspeicher nicht durchgef hrt werden.
EXCEPTION_PARAMETER1: 0000000000000001
EXCEPTION_PARAMETER2: 0000000000e70ff8
WRITE_ADDRESS: 0000000000e70ff8
FOLLOWUP_IP:
TOTALCMD64+10038
00000000`00410038 894df8 mov dword ptr [rbp-8],ecx
MOD_LIST: <ANALYSIS/>
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
FAULTING_THREAD: 0000000000003270
PRIMARY_PROBLEM_CLASS: INVALID_STACK_ACCESS
BUGCHECK_STR: APPLICATION_FAULT_INVALID_STACK_ACCESS_INVALID_POINTER_WRITE
LAST_CONTROL_TRANSFER: from 0000000000000000 to 0000000000410038
STACK_TEXT:
00000000`00e70fb0 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : TOTALCMD64+0x10038
SYMBOL_STACK_INDEX: 0
SYMBOL_NAME: TOTALCMD64+10038
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: TOTALCMD64
IMAGE_NAME: TOTALCMD64.EXE
DEBUG_FLR_IMAGE_TIMESTAMP: 0
STACK_COMMAND: dt ntdll!LdrpLastDllInitializer BaseDllName ; dt ntdll!LdrpFailureData ; ~0s; .ecxr ; kb
FAILURE_BUCKET_ID: INVALID_STACK_ACCESS_c0000005_TOTALCMD64.EXE!Unknown
BUCKET_ID: X64_APPLICATION_FAULT_INVALID_STACK_ACCESS_INVALID_POINTER_WRITE_TOTALCMD64+10038
WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/TOTALCMD64_EXE/11_51_0_0/_______0/TOTALCMD64_EXE/11_51_0_0/_______0/c0000005/00010038.htm?Retriage=1
Followup: MachineOwner
---------
Code: Select all
[em_test_longnames]
cmd=pwsh -c "%commander_path%\Plugins\PowerShell\longNames.ps1"
param=%WL %T
Code: Select all
TOTALCMD#BAR#DATA
em_test_longnames
wciconex.dll
0
-1
Code: Select all
$time = [diagnostics.stopwatch]::StartNew()
function pathLength ($path){
if ($path.length -gt 260){$color = 'Yellow'} else {$color = 'Gray'}
'{0,3} {1}' -f $path.length,$path|Write-Host -f $color}
$files = @()
if ($args){
# take $files from %WL input TC parameter: %WL > $args[0] = $lines > $files, if any
foreach ($line in [IO.File]::ReadLines($args[0])){$files += [IO.FileInfo]$line}
# if %WL returns nothing : try to take $files from current folder, if any
if ($files.count -eq 0){
$files = Get-ChildItem -file -recurse -force}
# take $target path from %T input TC parameter: $args[1] = $target
$target = $args[1]
# if $files, process each one
if ($files.count -ge 1){
'processing...'|Write-Host -f Green
foreach ($file in $files){
# display source/target path length and path itself (if length is over 260, display in yellow)
pathLength $file.FullName
pathLength ([IO.Path]::combine($target+$file.FullName.substring(([string]$pwd).length+1)))
''
} # end of foreach $file loop
} else {'there are no input files...'|Write-Host -f Magenta}
} else {'no Total Commander arguments have been passed...'|Write-Host -f Red}
# finalizing
$time.Stop()
'{0} items processed for {1:mm}:{1:ss}.{1:fff}' -f $files.count,$time.Elapsed|Write-Host -f DarkCyan
pause
Code: Select all
[em_test_longnames]
cmd=pwsh -c "%commander_path%\Plugins\PowerShell\longNames.ps1"
param=%WL %T
Code: Select all
TOTALCMD#BAR#DATA
em_test_longnames
wciconex.dll
0
-1
Code: Select all
$time = [diagnostics.stopwatch]::StartNew()
function pathLength ($path){
if ($path.length -gt 260){$color = 'Yellow'} else {$color = 'Gray'}
'{0,3} {1}' -f $path.length,$path|Write-Host -f $color}
$files = @()
if ($args){
# take $files from %WL input TC parameter: %WL > $args[0] = $lines > $files, if any
foreach ($line in [IO.File]::ReadLines($args[0])){$files += [IO.FileInfo]$line}
# if %WL returns nothing : try to take $files from current folder, if any
if ($files.count -eq 0){
$files = Get-ChildItem -file -recurse -force}
# take $target path from %T input TC parameter: $args[1] = $target
$target = $args[1]
# if $files, process each one
if ($files.count -ge 1){
'processing...'|Write-Host -f Green
foreach ($file in $files){
# display source/target path length and path itself (if length is over 260, display in yellow)
pathLength $file.FullName
pathLength ([IO.Path]::combine($target+$file.FullName.substring(([string]$pwd).length+1)))
''
} # end of foreach $file loop
} else {'there are no input files...'|Write-Host -f Magenta}
} else {'no Total Commander arguments have been passed...'|Write-Host -f Red}
# finalizing
$time.Stop()
'{0} items processed for {1:mm}:{1:ss}.{1:fff}' -f $files.count,$time.Elapsed|Write-Host -f DarkCyan
pause
filex | FullPathLen | > | 259 |
filex | FullPathLen | > | 259 |
... it looks like the paths used in some of my toolbars, buttons on toolbars, em_ commands, ... are not really "portable".
Now ...
- %variablename:~5,7% skips 5 characters and uses the following 7. Negative numbers count from the end of the environment variable.
- %COMMANDER_PATH% The Total Commander directory
... it looks like the paths used in some of my toolbars, buttons on toolbars, em_ commands, ... are not really "portable".
Now ...
- %variablename:~5,7% skips 5 characters and uses the following 7. Negative numbers count from the end of the environment variable.
- %COMMANDER_PATH% The Total Commander directory
Code: Select all
"%COMMANDER_PATH%\..\Portable Program X\some.exe"
to refer to a program on the same level as the TC directory. No need to use a substring.]]>Code: Select all
"%COMMANDER_PATH%\..\Portable Program X\some.exe"
to refer to a program on the same level as the TC directory. No need to use a substring.]]>Code: Select all
"%COMMANDER_PATH%\..\
Code: Select all
"%COMMANDER_PATH%\..\
Code: Select all
[HKEY_CLASSES_ROOT\Drive\shell]
@="open"
[HKEY_CLASSES_ROOT\Drive\shell\open]
; Adding "/T" opens the folder in a new tab instead of overriding the last active tab.
[HKEY_CLASSES_ROOT\Drive\shell\open\command]
@="c:\\Program Files\\totalcmd\\TOTALCMD64.EXE /O /T \"%1\""
[HKEY_CLASSES_ROOT\Directory\shell]
@="open"
[HKEY_CLASSES_ROOT\Directory\shell\open]
[HKEY_CLASSES_ROOT\Directory\shell\open\command]
@="c:\\Program Files\\totalcmd\\TOTALCMD64.EXE /O /T \"%1\""
Code: Select all
[HKEY_CLASSES_ROOT\Drive\shell]
@="open"
[HKEY_CLASSES_ROOT\Drive\shell\open]
; Adding "/T" opens the folder in a new tab instead of overriding the last active tab.
[HKEY_CLASSES_ROOT\Drive\shell\open\command]
@="c:\\Program Files\\totalcmd\\TOTALCMD64.EXE /O /T \"%1\""
[HKEY_CLASSES_ROOT\Directory\shell]
@="open"
[HKEY_CLASSES_ROOT\Directory\shell\open]
[HKEY_CLASSES_ROOT\Directory\shell\open\command]
@="c:\\Program Files\\totalcmd\\TOTALCMD64.EXE /O /T \"%1\""
See: https://learn.microsoft.com/en-us/windows/win32/sysinfo/hkey-classes-root-key...If you write keys to a key under HKEY_CLASSES_ROOT, the system stores the information under HKEY_LOCAL_MACHINE\Software\Classes. If you write values to a key under HKEY_CLASSES_ROOT, and the key already exists under HKEY_CURRENT_USER\Software\Classes, the system will store the information there instead of under HKEY_LOCAL_MACHINE\Software\Classes.
Processes running in a security context other than that of the interactive user should not use the HKEY_CLASSES_ROOT key with the registry functions...
See: https://learn.microsoft.com/en-us/windows/win32/sysinfo/hkey-classes-root-key...If you write keys to a key under HKEY_CLASSES_ROOT, the system stores the information under HKEY_LOCAL_MACHINE\Software\Classes. If you write values to a key under HKEY_CLASSES_ROOT, and the key already exists under HKEY_CURRENT_USER\Software\Classes, the system will store the information there instead of under HKEY_LOCAL_MACHINE\Software\Classes.
Processes running in a security context other than that of the interactive user should not use the HKEY_CLASSES_ROOT key with the registry functions...
This isn't about Common Dialogs because they can't be replaced by the user no matter what. Programmers can change or maybe even replace them, but that requires some work.2. 'Common Item Dialog' is intended
This isn't about Common Dialogs because they can't be replaced by the user no matter what. Programmers can change or maybe even replace them, but that requires some work.2. 'Common Item Dialog' is intended
Two ways come to mind:Is there a way I can verify that's the case before contacting the developers?
Two ways come to mind:Is there a way I can verify that's the case before contacting the developers?
Code: Select all
wt.exe, -d %P%
Code: Select all
wt.exe, -d P
Code: Select all
cmd, /c start "Windows Terminal" wt.exe -d "%P"
Code: Select all
cmd /c start
Code: Select all
wt.exe, -d %P%
Code: Select all
wt.exe, -d P
Code: Select all
cmd, /c start "Windows Terminal" wt.exe -d "%P"
Code: Select all
cmd /c start
Code: Select all
TOTALCMD#BAR#DATA
wt.exe -d
"%P\"
%COMMANDER_EXE%,2
Windows Terminal
-1
]]>Code: Select all
TOTALCMD#BAR#DATA
wt.exe -d
"%P\"
%COMMANDER_EXE%,2
Windows Terminal
-1
]]>Code: Select all
wt.exe -d
.
Code: Select all
wt.exe -d
.
Temporary link | Regular link .../forum/... |
Search Modifiers | Search Modifiers |
Temporary link | Regular link .../forum/... |
global: | global: |
Temporary link | Regular link .../forum/... |
from-disk: | from-disk: |
Search properties and content on disk (not from the index) or search properties from the index. | |
Always search unindexed content | Always search unindexed content |
Temporary link | Regular link .../forum/... |
Search Modifiers | Search Modifiers |
Temporary link | Regular link .../forum/... |
global: | global: |
Temporary link | Regular link .../forum/... |
from-disk: | from-disk: |
Search properties and content on disk (not from the index) or search properties from the index. | |
Always search unindexed content | Always search unindexed content |
I meant leaving the directory names out when printing a file list from a branch view.
I meant leaving the directory names out when printing a file list from a branch view.
Code: Select all
cd ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{374DE290-123F-4565-9164-39C4925E467B}
Code: Select all
cd %$Downloads%
Code: Select all
cd ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{374DE290-123F-4565-9164-39C4925E467B}
Code: Select all
cd %$Downloads%
Code: Select all
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
Code: Select all
TOTALCMD#BAR#DATA
cd %$Desktop%
imageres.dll,174
Desktop
0
-1
Code: Select all
TOTALCMD#BAR#DATA
cd %$Documents%
imageres.dll,107
Documents
0
-1
Code: Select all
TOTALCMD#BAR#DATA
cd %$Downloads%
imageres.dll,175
Downloads
0
-1
That it because you have opted for (knowingly or not) the backup of some basic folders like that in the cloud (Microsoft dubbed them as 'important' in the OneDrive settings [see 'OneDrive - Settings - Sync and backup' or 'Start - Settings - Update & Security - Files backup - Backup files to OneDrive']) (then such folders are physically moved to the cloud folder).]]>
Code: Select all
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders]
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]
Code: Select all
TOTALCMD#BAR#DATA
cd %$Desktop%
imageres.dll,174
Desktop
0
-1
Code: Select all
TOTALCMD#BAR#DATA
cd %$Documents%
imageres.dll,107
Documents
0
-1
Code: Select all
TOTALCMD#BAR#DATA
cd %$Downloads%
imageres.dll,175
Downloads
0
-1
That it because you have opted for (knowingly or not) the backup of some basic folders like that in the cloud (Microsoft dubbed them as 'important' in the OneDrive settings [see 'OneDrive - Settings - Sync and backup' or 'Start - Settings - Update & Security - Files backup - Backup files to OneDrive']) (then such folders are physically moved to the cloud folder).]]>
You are missing the colon after C so try C:\Users\[username]\Desktop— But for the Desktop I have tried to write C\Users\[username]\Desktop, but it does not works
Code: Select all
cd %USERPROFILE%\Desktop
cd C:\Users\%USERNAME%\Desktop
cd C:\%HOMEPATH%\Desktop
cd %HOMEDRIVE%\%HOMEPATH%\Desktop
cd %HOMEDRIVE%\Users\%USERNAME%\Desktop
cd %SYSTEMDRIVE%\%HOMEPATH%\Desktop
cd %SYSTEMDRIVE%\Users\%USERNAME%\Desktop
cd %$DESKTOP% (in TC only)
cd %${B4BFCC3A-DB2C-424C-B029-7FE99A87C641}% (TC only)
Code: Select all
hh.exe %COMMANDER_PATH%\TOTALCMD.CHM::env_vars.htm
You are missing the colon after C so try C:\Users\[username]\Desktop— But for the Desktop I have tried to write C\Users\[username]\Desktop, but it does not works
Code: Select all
cd %USERPROFILE%\Desktop
cd C:\Users\%USERNAME%\Desktop
cd C:\%HOMEPATH%\Desktop
cd %HOMEDRIVE%\%HOMEPATH%\Desktop
cd %HOMEDRIVE%\Users\%USERNAME%\Desktop
cd %SYSTEMDRIVE%\%HOMEPATH%\Desktop
cd %SYSTEMDRIVE%\Users\%USERNAME%\Desktop
cd %$DESKTOP% (in TC only)
cd %${B4BFCC3A-DB2C-424C-B029-7FE99A87C641}% (TC only)
Code: Select all
hh.exe %COMMANDER_PATH%\TOTALCMD.CHM::env_vars.htm
Code: Select all
cd %USERPROFILE%\Desktop
cd %HOMEDRIVE%\%HOMEPATH%\Desktop
cd %SYSTEMDRIVE%\%HOMEPATH%\Desktop
This was an answer to Yo230 who obviously has his Windows installed on C: and is not Using XP (mentioning "\Users" and not "\Documents and Settings")]]>Not all users are the same
Code: Select all
cd %USERPROFILE%\Desktop
cd %HOMEDRIVE%\%HOMEPATH%\Desktop
cd %SYSTEMDRIVE%\%HOMEPATH%\Desktop
This was an answer to Yo230 who obviously has his Windows installed on C: and is not Using XP (mentioning "\Users" and not "\Documents and Settings")]]>Not all users are the same
It looks like there is something really wrong with you Windows installation.cd %$Desktop% : result : in the address bar it gives me "C:\Users\[username]\OneDrive\Desktop"
It looks like there is something really wrong with you Windows installation.cd %$Desktop% : result : in the address bar it gives me "C:\Users\[username]\OneDrive\Desktop"
Win 10 too.Maybe it is a Window 11 thing?
2Yo230Yo230 wrote: 2025-04-16, 17:10 UTC Is it possible to force Windows to do not use OneDrive for the desktop, in order to have something like "C:\Users\[username]\Desktop"?
Win 10 too.Maybe it is a Window 11 thing?
2Yo230Yo230 wrote: 2025-04-16, 17:10 UTC Is it possible to force Windows to do not use OneDrive for the desktop, in order to have something like "C:\Users\[username]\Desktop"?
have you tried installing windows without a minihard account?]]>Yo230 wrote: 2025-04-16, 17:10 UTC Is it possible to force Windows to do not use OneDrive for the desktop, in order to have something like "C:\Users\[username]\Desktop" ?
have you tried installing windows without a minihard account?]]>Yo230 wrote: 2025-04-16, 17:10 UTC Is it possible to force Windows to do not use OneDrive for the desktop, in order to have something like "C:\Users\[username]\Desktop" ?
and what folders do you see there
have you tried installing windows without a minihard account?Yo230 wrote: 2025-04-16, 17:10 UTC Is it possible to force Windows to do not use OneDrive for the desktop, in order to have something like "C:\Users\[username]\Desktop" ?
and what folders do you see there
have you tried installing windows without a minihard account?Yo230 wrote: 2025-04-16, 17:10 UTC Is it possible to force Windows to do not use OneDrive for the desktop, in order to have something like "C:\Users\[username]\Desktop" ?
Right-click on your OneDrive folder (with the cloud icon) in Windows Explorer,Yo230 wrote: 2025-04-25, 06:01 UTC Now, is it a way to force Windows to display the full path of the files (absolute path)
all the time in the Windows File explorer (in order to have it also in TC) ?
Right-click on your OneDrive folder (with the cloud icon) in Windows Explorer,Yo230 wrote: 2025-04-25, 06:01 UTC Now, is it a way to force Windows to display the full path of the files (absolute path)
all the time in the Windows File explorer (in order to have it also in TC) ?
I'm not sure whether or not a special CPU instruction set is required but I doubt it. The only way to know is to measure the time required to verify the files. As far as I'm aware, Blake3 is much faster than any other hash type supported by TC. In the end, it's not really important which hash type is used. What matters is that the verification is done properly. Both hash types can achieve that. And even though MD5 has been discredited for years now, it's still fine to be used as a checksum algorithm in the field we're talking about.]]>12.04.22 Release Total Commander 10.50 beta 1
[...]
11.04.22 Added: Show error when trying to check a BLAKE3 checksum and the dll cannot be loaded, e.g. on Windows versions before Windows XP, or when the dll isn't found (32/64)
I'm not sure whether or not a special CPU instruction set is required but I doubt it. The only way to know is to measure the time required to verify the files. As far as I'm aware, Blake3 is much faster than any other hash type supported by TC. In the end, it's not really important which hash type is used. What matters is that the verification is done properly. Both hash types can achieve that. And even though MD5 has been discredited for years now, it's still fine to be used as a checksum algorithm in the field we're talking about.]]>12.04.22 Release Total Commander 10.50 beta 1
[...]
11.04.22 Added: Show error when trying to check a BLAKE3 checksum and the dll cannot be loaded, e.g. on Windows versions before Windows XP, or when the dll isn't found (32/64)
So put LongNameCopy=1 in the [Configuration] section of your wincmd.ini file, to avoid messages about long paths]]>Help wrote:LongNameCopy=0 During file operations, warn if target name is longer than 259 characters:
0=always
1=never
2=if source name isn't longer than 259 characters
3=disallow long names
So put LongNameCopy=1 in the [Configuration] section of your wincmd.ini file, to avoid messages about long paths]]>Help wrote:LongNameCopy=0 During file operations, warn if target name is longer than 259 characters:
0=always
1=never
2=if source name isn't longer than 259 characters
3=disallow long names
Code: Select all
1 VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEOS 0x40000
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
BLOCK "040904E4"
{
VALUE "FileDescription", "Your description - shown in TC when selecting the dll"
VALUE "FileVersion", "1.0.0.0"
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x0409 0x04E4
}
}
Code: Select all
1 VERSIONINFO
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEOS 0x40000
FILETYPE 0x1
{
BLOCK "StringFileInfo"
{
BLOCK "040904E4"
{
VALUE "FileDescription", "Your description - shown in TC when selecting the dll"
VALUE "FileVersion", "1.0.0.0"
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x0409 0x04E4
}
}
# | %WL standalone | %WL with modifier | |
% | modifier | not applicable | %Y |
mode | behavior | behavior | |
1 | no selection, cursor on [..] |
nothing = useless: no valid %WL parameter, no list file, no other valid parameters are passed as well |
fully useful: %WL parameter is valid, list file is empty, other parameters: OK (e.g., %P, %T, etc, are passed) |
2 | no selection, cursor on a file/folder |
fully useful: item under cursor is passed to %WL, list file is a list, other parameters: OK |
effectively useless: item under cursor is NOT passed to %WL, list file is empty, other parameters: OK |
3 | active selection, there are files/folders selected |
fully useful: all selected items are passed to %WL, list file is a list, other parameters: OK |
fully useful: all selected items are passed to %WL, list file is a list, other parameters: OK |
Code: Select all
$time = [diagnostics.stopwatch]::StartNew()
$files = $folders = @()
if ($pwd){
'try current path as $pwd'|Write-Host -f DarkCyan
$pwd|Write-Host -f Cyan
$path = [string]$pwd;$length=$path.length+1}
''
if (-not($args)){$message = 'working folder ($pwd)'
'no parameters; try files from current path'|Write-Host -f DarkCyan
$files = Get-ChildItem $path -file -recurse -force
$folders = Get-ChildItem $path -directory -recurse -force}
if ($args){$message = '%WL list file'
'list file as %WL'|Write-Host -f DarkCyan
$list = [IO.FileInfo]$args[0];$list.Name|Write-Host -f Cyan
''
'source path as %P'|Write-Host -f DarkCyan
$source = [IO.DirectoryInfo]$args[1];$source.Name|Write-Host -f Cyan
$path = [string]$source;$length=$path.length
''
'target path as %T'|Write-Host -f DarkCyan
$target = [IO.DirectoryInfo]$args[2];$target.Name|Write-Host -f Cyan
''
'read %WL list file ({0})' -f $list.Name|Write-Host -f Green
if ($list.length -le 2){'list file is empty'|Write-Host -f Yellow} else {
$lines = [IO.File]::ReadLines($list)
foreach ($line in $lines){
if ((Get-Item $line) -is [IO.FileInfo]){
$file = [IO.FileInfo]$line;$files += $file}
if ((Get-Item $line) -is [IO.DirectoryInfo]){
$folder = [IO.DirectoryInfo]$line;$folders += $folder}}}}
''
# do something with files and folders
'{0} files in {1}' -f $files.count,$message|Write-Host -f DarkCyan
foreach ($file in $files){
# do something with files (here, display relative paths)
$file.FullName.substring($length)|Write-Host -f Cyan}
''
'{0} folders in {1}' -f $folders.count,$message|Write-Host -f DarkCyan
foreach ($folder in $folders){
# do something with folders (here, display relative paths)
$folder.FullName.substring($length)|Write-Host -f Cyan}
''
$time.Stop()
'{0} files and {1} folders found for {2:mm}:{2:ss}.{2:fff}' -f $files.count,$folders.count,$time.Elapsed|Write-Host -f DarkCyan
sleep -seconds 12
Code: Select all
[em_test_tc_params_files]
cmd=pwsh -c "%commander_path%\Plugins\apps\PowerShell\echoParamsFiles.ps1"
param=%WL '%P' '%T' %Q %Y
[em_test_tc_params_files_standalone]
cmd=pwsh -c "%commander_path%\Plugins\apps\PowerShell\echoParamsFiles.ps1"
param=%WL '%P' '%T' %Q
Code: Select all
TOTALCMD#BAR#DATA
em_test_tc_params_files
wcmicon2.dll
0
-1
Code: Select all
TOTALCMD#BAR#DATA
em_test_tc_params_files_standalone
wcmicons.dll
0
-1
# | %WL standalone | %WL with modifier | |
% | modifier | not applicable | %Y |
mode | behavior | behavior | |
1 | no selection, cursor on [..] |
nothing = useless: no valid %WL parameter, no list file, no other valid parameters are passed as well |
fully useful: %WL parameter is valid, list file is empty, other parameters: OK (e.g., %P, %T, etc, are passed) |
2 | no selection, cursor on a file/folder |
fully useful: item under cursor is passed to %WL, list file is a list, other parameters: OK |
effectively useless: item under cursor is NOT passed to %WL, list file is empty, other parameters: OK |
3 | active selection, there are files/folders selected |
fully useful: all selected items are passed to %WL, list file is a list, other parameters: OK |
fully useful: all selected items are passed to %WL, list file is a list, other parameters: OK |
Code: Select all
$time = [diagnostics.stopwatch]::StartNew()
$files = $folders = @()
if ($pwd){
'try current path as $pwd'|Write-Host -f DarkCyan
$pwd|Write-Host -f Cyan
$path = [string]$pwd;$length=$path.length+1}
''
if (-not($args)){$message = 'working folder ($pwd)'
'no parameters; try files from current path'|Write-Host -f DarkCyan
$files = Get-ChildItem $path -file -recurse -force
$folders = Get-ChildItem $path -directory -recurse -force}
if ($args){$message = '%WL list file'
'list file as %WL'|Write-Host -f DarkCyan
$list = [IO.FileInfo]$args[0];$list.Name|Write-Host -f Cyan
''
'source path as %P'|Write-Host -f DarkCyan
$source = [IO.DirectoryInfo]$args[1];$source.Name|Write-Host -f Cyan
$path = [string]$source;$length=$path.length
''
'target path as %T'|Write-Host -f DarkCyan
$target = [IO.DirectoryInfo]$args[2];$target.Name|Write-Host -f Cyan
''
'read %WL list file ({0})' -f $list.Name|Write-Host -f Green
if ($list.length -le 2){'list file is empty'|Write-Host -f Yellow} else {
$lines = [IO.File]::ReadLines($list)
foreach ($line in $lines){
if ((Get-Item $line) -is [IO.FileInfo]){
$file = [IO.FileInfo]$line;$files += $file}
if ((Get-Item $line) -is [IO.DirectoryInfo]){
$folder = [IO.DirectoryInfo]$line;$folders += $folder}}}}
''
# do something with files and folders
'{0} files in {1}' -f $files.count,$message|Write-Host -f DarkCyan
foreach ($file in $files){
# do something with files (here, display relative paths)
$file.FullName.substring($length)|Write-Host -f Cyan}
''
'{0} folders in {1}' -f $folders.count,$message|Write-Host -f DarkCyan
foreach ($folder in $folders){
# do something with folders (here, display relative paths)
$folder.FullName.substring($length)|Write-Host -f Cyan}
''
$time.Stop()
'{0} files and {1} folders found for {2:mm}:{2:ss}.{2:fff}' -f $files.count,$folders.count,$time.Elapsed|Write-Host -f DarkCyan
sleep -seconds 12
Code: Select all
[em_test_tc_params_files]
cmd=pwsh -c "%commander_path%\Plugins\apps\PowerShell\echoParamsFiles.ps1"
param=%WL '%P' '%T' %Q %Y
[em_test_tc_params_files_standalone]
cmd=pwsh -c "%commander_path%\Plugins\apps\PowerShell\echoParamsFiles.ps1"
param=%WL '%P' '%T' %Q
Code: Select all
TOTALCMD#BAR#DATA
em_test_tc_params_files
wcmicon2.dll
0
-1
Code: Select all
TOTALCMD#BAR#DATA
em_test_tc_params_files_standalone
wcmicons.dll
0
-1
This happens without %Y, according to the description. What's wrong?I.e., when there's no selection and the cursor is on a file/folder, the item under the cursor is sent to the list file.
The question is unclear.What exactly is being caught there from the TC in case 1 [in place of %WL or rather by itself?
Where? %P returns the entire path, with 260+ characters.However, if the active path happens to exceed the 260-symbol limitation, only the drive letter is passed/accepted, and the logic to further work with files and folders (as in the example script below) would completely fail.
This happens without %Y, according to the description. What's wrong?I.e., when there's no selection and the cursor is on a file/folder, the item under the cursor is sent to the list file.
The question is unclear.What exactly is being caught there from the TC in case 1 [in place of %WL or rather by itself?
Where? %P returns the entire path, with 260+ characters.However, if the active path happens to exceed the 260-symbol limitation, only the drive letter is passed/accepted, and the logic to further work with files and folders (as in the example script below) would completely fail.
]]>Help wrote:%Y anywhere in the parameters: Pass empty list to program when nothing is selected when using one of the List parameters like %L, or multi-file parameters like %S. Otherwise, the file under the cursor would be passed.
%y anywhere in the parameters: When nothing is selected when using one of the List parameters like %L, pass all other parameters except for the list parameter to the called program.
Note: %Y%y works like %y when something is selected or the cursor stands on "..", otherwise it selects the file under the cursor
]]>Help wrote:%Y anywhere in the parameters: Pass empty list to program when nothing is selected when using one of the List parameters like %L, or multi-file parameters like %S. Otherwise, the file under the cursor would be passed.
%y anywhere in the parameters: When nothing is selected when using one of the List parameters like %L, pass all other parameters except for the list parameter to the called program.
Note: %Y%y works like %y when something is selected or the cursor stands on "..", otherwise it selects the file under the cursor
Code: Select all
DriveBarHide=drive_list
Code: Select all
DriveBarHide=drive_list
]]>Nein, "d" ist die Download-Version und nicht die eingeschränkte Play Store-Version. …
]]>Nein, "d" ist die Download-Version und nicht die eingeschränkte Play Store-Version. …
Code: Select all
smbd_calculate_access_mask_fsp: Access denied on file mnt/usb/Fly/2/S2.7z: rejected by share access mask[0x001F00A9] orig[0x0000008B] mapped[0x0000008B] rejec
Code: Select all
[Fly]
comment = The USB FLY drive
path = /media/usb
guest ok = Yes
read only = No
valid users = root kdshare
admin users = root
force create mode = 0600
force directory mode = 0700
wide links = yes
follow symlinks = yes
Code: Select all
net use F: \\192.168.3.8\Fly\Fly /persistent:no
Code: Select all
smbd_calculate_access_mask_fsp: Access denied on file mnt/usb/Fly/2/S2.7z: rejected by share access mask[0x001F00A9] orig[0x0000008B] mapped[0x0000008B] rejec
Code: Select all
[Fly]
comment = The USB FLY drive
path = /media/usb
guest ok = Yes
read only = No
valid users = root kdshare
admin users = root
force create mode = 0600
force directory mode = 0700
wide links = yes
follow symlinks = yes
Code: Select all
net use F: \\192.168.3.8\Fly\Fly /persistent:no
Code: Select all
TOTALCMD#BAR#DATA
cm_Select
?<Enter the number of items>
wcmicon2.dll,21
Select the specified number of items, starting from the current position
Code: Select all
TOTALCMD#BAR#DATA
cm_Select
?<Enter the number of items>
wcmicon2.dll,21
Select the specified number of items, starting from the current position