(Lister-)Plugin zum Anzeigen von ANSI in Binärdateien

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
User avatar
Dalai
Power Member
Power Member
Posts: 9990
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

(Lister-)Plugin zum Anzeigen von ANSI in Binärdateien

Post by *Dalai »

Hallo Leute,

ich hoffe, der Titel ist einigermaßen verständlich. Ich suche ein Plugin für den TC, das mir die lesbaren Texte aus Binärdateien anzeigen und filtern kann.

Beispiel: ich schaue mit dem Lister ein ZIP an und das Plugin sorgt dafür, dass der unlesbare Kram verschwindet und nur noch die ANSI/ASCII-Anteile übrigbleiben, in dem Fall die Namen der gepackten Dateien.

Der ProcessExplorer hat eine ähnliche Funktion. Dort kann man in den Eigenschaften eines Prozesses zum Register "Strings" wechseln und sieht dort, welche lesbaren Zeichen dieser Prozess enthält.

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
karlchen
Power Member
Power Member
Posts: 4605
Joined: 2003-02-06, 22:23 UTC
Location: Germany

Post by *karlchen »

Hallo, Dalai.

Plugin ist dies keins, aber vielleicht gefällt dir ja auch die Kombination aus Windows Eingabeaufforderung (cmd.exe) und Mark Russinovich'ens strings, welches wiederum nur eine Nachbildung des Unix/Linux Kommandos strings ist.

Grüße,
Karl
User avatar
Dalai
Power Member
Power Member
Posts: 9990
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Ist zwar nicht so richtig das, was ich suche, aber schonmal besser als nichts. Mit einem schnell hingeschmierten (aber dennoch brauchbaren) Skript ausgestattet

Code: Select all

@echo off

if "%~1"=="" goto :EOF

REM -----------------------------------------------
set strings=E:\Programme\strings\strings.exe
set lister=%COMMANDER_PATH%\Plugins\Lister\lister.exe
set outfile=%temp%\strings.txt
REM -----------------------------------------------

echo Verarbeite %1 ...

"%strings%" -n 5 -q "%~1" > "%outfile%"

start /wait "list" "%lister%" "%outfile%" /i="%COMMANDER_INI%" /T1

del /F /Q "%outfile%"
und das im Startermenü mit Parametern %P%N hinterlegt, kann man zumindest so tun, als benutzte man den normalen Lister ;). Nur am englischen Menü desselben sieht man, dass es der Standalone-Lister ist. Ich weiß, dass es /S=L gibt, aber ich möchte das vermeiden.

Wenn jemand noch eine Lösung via Plugin kennt: immer her damit. Bis hierher aber erstmal danke an Karlchen!

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Frage:

Code: Select all

set lister=%COMMANDER_PATH%\Plugins\Lister\lister.exe 
Ich habe keine Lister.exe - das ist doch der integrierte Befehl, nicht wahr?

Ich habe mir den "lister" auf Ultraedit.exe umgebaut - funktioniert an sich auch, aber es geht auch gleichzeitig die leere Datei "1" auf ...

meine strings.bat:

Code: Select all

@echo off
rem (Lister-)Plugin zum Anzeigen von ANSI in Binärdateien
rem http://ghisler.ch/board/viewtopic.php?p=217395#217395
rem ich hoffe, der Titel ist einigermaßen verständlich. Ich suche ein Plugin für den TC, 
rem das mir die lesbaren Texte aus Binärdateien anzeigen und filtern kann.
rem Beispiel: ich schaue mit dem Lister ein ZIP an und das Plugin sorgt dafür, 
rem dass der unlesbare Kram verschwindet und nur noch die ANSI/ASCII-Anteile übrigbleiben, 
rem in dem Fall die Namen der gepackten Dateien.
rem Der ProcessExplorer hat eine ähnliche Funktion. Dort kann man in den Eigenschaften eines 
rem Prozesses zum Register "Strings" wechseln und sieht dort, welche lesbaren Zeichen dieser Prozess enthält. 
if "%~1"=="" goto :EOF
REM -----------------------------------------------
set strings=%COMMANDER_PATH%\Sonderprogramme\Strings\Strings.exe
set lister=d:\Software\UltraEdit_14\Uedit32.exe
set outfile=%temp%\strings.txt
REM -----------------------------------------------
echo Verarbeite %1 ...
"%strings%" -n 5 -q "%~1" > "%outfile%"
start /wait "list" "%lister%" "%outfile%" /i="%COMMANDER_INI%" /T1
del /F /Q "%outfile%" 
Mein Button:

Code: Select all

TOTALCMD#BAR#DATA
D:\Program Files\totalcmd\Sonderprogramme\Strings\strings.bat
%P%N
D:\Program Files\totalcmd\TOTALCMD.EXE,31
Zeigt aus Binärdaten nur die ASCII-Strings
D:\Program Files\totalcmd\Sonderprogramme\Strings\

-1
Wer kann helfen?

Peter
TC 10.xx / #266191
Win 10 x64
User avatar
norfie²
Power Member
Power Member
Posts: 1038
Joined: 2006-02-10, 07:27 UTC

Post by *norfie² »

keine Lister.exe - das ist doch der integrierte Befehl, nicht wahr?
Nein.
Wer kann helfen?
Vorletzte Zeile aendern in

Code: Select all

start /wait "list" "%lister%" "%outfile%"
"War is evil, in so far as it makes more bad people than it takes away."
Immanuel Kant in "Perpetual Peace"
User avatar
Dalai
Power Member
Power Member
Posts: 9990
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Peter wrote:Frage:

Code: Select all

set lister=%COMMANDER_PATH%\Plugins\Lister\lister.exe 
Ich habe keine Lister.exe - das ist doch der integrierte Befehl, nicht wahr?
Nö. Schau mal hier; da gibt's den Standalone-Lister zum Download, denn wie ich oben auch schon schrieb, vermeide ich, solche Funktionen des TC zu nutzen.
Ich habe mir den "lister" auf Ultraedit.exe umgebaut - funktioniert an sich auch, aber es geht auch gleichzeitig die leere Datei "1" auf ...
Dann musst du dem Editor beibringen, keine leere Datei zu öffnen. Wenn ich statt des Listers bei mir ConTEXT nutze, geht jedenfalls nur die gewünschte Datei auf. Die Parameter, die ich im Skript für %lister% verwende, sind natürlich auf diesen zugeschnitten. Du solltest die alle weglassen, bis auf %outfile% logischerweise.

Ergänzung: Man kann das Skript auch etwas anpassen, so dass die Parameter oben mit gesetzt werden:

Code: Select all

@echo off

if "%~1"=="" goto :EOF

REM -----------------------------------------------
set strings=E:\Programme\strings\strings.exe
set lister=%COMMANDER_PATH%\Plugins\Lister\lister.exe
set params=/i="%COMMANDER_INI%" /T1
set outfile=%temp%\strings.txt
REM -----------------------------------------------

echo Verarbeite %1 ...
title Verarbeite %1 ...

"%strings%" -n 5 -q "%~1" > "%outfile%"

start /wait "list" "%lister%" "%outfile%" %params%

del /F /Q "%outfile%"
Dann sieht's noch etwas stylischer aus, weil nur Variablen benutzt werden :lol: ;).

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Wer kann helfen?
Vorletzte Zeile aendern in

Code: Select all

start /wait "list" "%lister%" "%outfile%"
[/quote]
Danke. Klappt.
Dalai wrote:...Dann musst du dem Editor beibringen, keine leere Datei zu öffnen. Wenn ich statt des Listers bei mir ConTEXT nutze, geht jedenfalls nur die gewünschte Datei auf. Die Parameter, die ich im Skript für %lister% verwende, sind natürlich auf diesen zugeschnitten. Du solltest die alle weglassen, bis auf %outfile% logischerweise.
Dürfte dem obigen Code entsprechen. Danke.

Hier meine kleine Ergänzung, die
- als Kopfzeile zwei Infozeilen inj die Datei schreibt
- den Originaldateinamen als Ausgabedatei verwendet.
(zur Verknüpfung "orignalname-erweiterung_strings.txt" bin ich zu dämlich.

Code: Select all

@echo off
rem (Lister-)Plugin zum Anzeigen von ANSI in Binärdateien
rem http://ghisler.ch/board/viewtopic.php?p=217395#217395
rem ich hoffe, der Titel ist einigermaßen verständlich. Ich suche ein Plugin für den TC, 
rem das mir die lesbaren Texte aus Binärdateien anzeigen und filtern kann.
rem Beispiel: ich schaue mit dem Lister ein ZIP an und das Plugin sorgt dafür, 
rem dass der unlesbare Kram verschwindet und nur noch die ANSI/ASCII-Anteile übrigbleiben, 
rem in dem Fall die Namen der gepackten Dateien.
rem Der ProcessExplorer hat eine ähnliche Funktion. Dort kann man in den Eigenschaften eines 
rem Prozesses zum Register "Strings" wechseln und sieht dort, welche lesbaren Zeichen dieser Prozess enthält. 
if "%~1"=="" goto :EOF
REM -----------------------------------------------
set strings=%COMMANDER_PATH%\Sonderprogramme\Strings\Strings.exe
set lister=d:\Software\UltraEdit_14\Uedit32.exe
set outfile=%temp%\%~n1
REM -----------------------------------------------
echo Verarbeite %1 ...
echo "%~1" > "%outfile%"
echo "-------------------------------" >> "%outfile%"
"%strings%" -n 5 -q "%~1" >> "%outfile%"
rem start /wait "list" "%lister%" "%outfile%" /i="%COMMANDER_INI%" /T1
start /wait "list" "%lister%" "%outfile%"
del /F /Q "%outfile%" 
Peter
TC 10.xx / #266191
Win 10 x64
User avatar
Dalai
Power Member
Power Member
Posts: 9990
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Peter wrote:Hier meine kleine Ergänzung, die
- als Kopfzeile zwei Infozeilen inj die Datei schreibt
Gute Idee.
- den Originaldateinamen als Ausgabedatei verwendet.
Ebenfalls nett. Darauf wäre ich nicht gekommen.
(zur Verknüpfung "orignalname-erweiterung_strings.txt" bin ich zu dämlich.
Geht ganz einfach:

Code: Select all

%~n1-%~x1_strings.txt
# oder
%~nx1_strings.txt
Je nachdem, wie das aussehen soll. Wenn der führende Punkt der Extension noch weg soll, wird's aber deutlich komplizierter.

Komplett, wieder etwas verfeinert, kann das dann so aussehen:

Code: Select all

@echo off

if "%~1"=="" goto :EOF

REM -----------------------------------------------
set strings=E:\Programme\strings\strings.exe
set lister=%COMMANDER_PATH%\Plugins\Lister\lister.exe
set params=/i="%COMMANDER_INI%" /T1
set outfile=%temp%\%~nx1_strings.txt
REM -----------------------------------------------

echo Verarbeite %1 ...
title Verarbeite %1 ...

(
    echo %1
    echo --------------------------------------------------------------------------------
    "%strings%" -n 5 -q "%~1"
)> "%outfile%"

start /wait "list" "%lister%" "%outfile%" %params%

del /F /Q "%outfile%"
MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
Peter
Power Member
Power Member
Posts: 2068
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Danke - für mich derzeit alles klar.

Peter
TC 10.xx / #266191
Win 10 x64
User avatar
tbeu
Power Member
Power Member
Posts: 1354
Joined: 2003-07-04, 07:52 UTC
Location: Germany
Contact:

Post by *tbeu »

Geht auch prima mit MultiLister, dann allerdings abhängig von der Dateierweiterung. Hier die Ergänzung von listfilter.ini

Code: Select all

[DLL|EXE]
Resolution=100
Fitpage=0
Format_TXT=%tcc%Tools\Strings\strings.exe	-n 5 -q %fn%%stdout%%hide%	Zeigt aus Binärdaten nur die ASCII-Strings
TC plugins: Autodesk 3ds Max / Inventor / Revit Preview, FileInDir, ImageMetaData (JPG Comment/EXIF/IPTC/XMP), MATLAB MAT-file Viewer, Mover, SetFolderDate, Solid Edge Preview, Zip2Zero and more
User avatar
Dalai
Power Member
Power Member
Posts: 9990
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

tbeu wrote:Geht auch prima mit MultiLister
Das scheint mir brauchbar, aber
dann allerdings abhängig von der Dateierweiterung.
das macht's dann wieder unbenutzbar für mich. Es gibt einfach zu viele Dateitypen, die binären Inhalts sein können... Und pauschal alle Dateitypen per * zu definieren, wäre - sofern es geht - auch doof, denn ich brauche die Geschichte nur manchmal.

Am liebsten wäre mir ein Lister-Plugin, das alle nicht mit anderen Lister-Plugins verknüpften Dateitypen anzeigt. Aber u.U. ist dafür sogar die Definitionsfähigkeit des TC unzureichend (weiß ich nicht genau).

Schwierige Sache, aber im Moment kann ich mit der Skriptlösung oben arbeiten :). Ich danke dir trotzdem fürs Mitdenken!

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
Post Reply