Dateien aufspalten und zusammenfügen ohne TC

German support forum

Moderators: Hacker, Stefan2, white

User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

tom*de wrote:Problem ist beim FOR die Reihenfolge, der audit-Dateien, deren Inhalt sollte so in _alles landen, wie ich sie im TC angezeigen lasse... eine Idee?
Und zum Schluss noch die Buttonversion für den TC:

Code: Select all

TOTALCMD#BAR#DATA
%COMSPEC% /c
COPY nul _alles.txt && FOR /F  "tokens=*" %%I IN (%l) DO (COPY _alles.txt /B + %%I /B _alles.txt)
%COMSPEC%
Zusammenfügen der markierten Files (_alles.txt)

1
-1
Code markieren und in Clipboard übernehmen; in der Buttonbar per Kontextmenue einfügen.

:!: Darauf achten, das das File _alles.txt nicht als letztes in der Liste markiert ist; könnte sonst eine Rekursion ohne Abbruch ergeben.:wink:

HTH,
Holger
User avatar
RID500
Member
Member
Posts: 194
Joined: 2006-11-20, 12:38 UTC

Post by *RID500 »

StatusQuo wrote:Das wäre:

Code: Select all

for /f "usebackq" %i in (`DIR /B audit.*`) do (COPY /B %i ......
Danke StatusQuo, den back quote 96 hatte ich auch ausprobiert, allerdings ohne "usebackq"

Danke an alle, schön das wir so gut zusammen arbeiten :wink:
/join #TCMD Chat at irc.freenode.net - Today's newbies are tomorrow's experts.
User avatar
tom*de
Senior Member
Senior Member
Posts: 394
Joined: 2003-02-25, 09:21 UTC

Post by *tom*de »

Sensationell... danke an die kreativen Köpfe für den tollen TC-Knopf :)

Habs noch den aktuellen Pfad eingefügt und "leerzeichensicher" gemacht:

Code: Select all

%COMSPEC% /c
COPY nul "%P_alles.txt" && FOR /F  "tokens=*" %%I IN (%l) DO (COPY /B "%P_alles.txt" + %%I "%P_alles.txt")
%SystemRoot%\system32\netshell.dll
Zusammenfügen der markierten Files in aktuellen Pfad\_alles.txt
Könnte der TC eigentlich im Tooltipp auch das "%P" auswerten?

Weiß jemand, wie mir "dir-Befehl" die nachfolgenden Dateien ohne Endung PDF auflistet? Problem sind die 2 Punkte bei den PDF-Files:

audit.07-06-05-23-00-18
audit.07-06-05-23-00-18.pdf
audit.07-06-06-23-00-16
audit.07-06-06-23-00-16.pdf
Last edited by tom*de on 2007-06-12, 09:36 UTC, edited 1 time in total.
Tom - #81178 - 5 User licence - Klugheit, Gerechtigkeit, Tapferkeit und Mäßigung plus Kooperation.
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Eines der "/B" ist vermutlich überflüssig
/B bezieht sich genau wie /A immer auf die Datei, die davor steht, sowie auf alle, die folgen.

Code: Select all

copy /B bla + blubb blob
reicht also völlig aus.
Weiß jemand, wie mir "dir-Befehl" die nachfolgenden Dateien ohne Endung PDF auflistet?

Code: Select all

dir | findstr /V pdf
Icfu
This account is for sale
User avatar
RID500
Member
Member
Posts: 194
Joined: 2006-11-20, 12:38 UTC

Post by *RID500 »

icfu wrote:
Weiß jemand, wie mir "dir-Befehl" die nachfolgenden Dateien ohne Endung PDF auflistet?

Code: Select all

dir | findstr /V pdf
Icfu
Mit /V werden die Dateien die den String 'PDF' enthalten gar nicht angezeigt.

Wenn ich's richtig verstehe sollen aber nur die Erweiterung ".PDF" nicht mit angezeigt werden?!?

Wieder sollte hier FOR helfen
for /? wrote: %~nI - Erzeugt nur den Dateinamen von %I.
%~xI - Erzeugt nur die Dateierweiterung von %I.
Aber das %~nI
gibt wahrscheinlich bei
audit.07-06-06-23-00-16.pdf
nur ein
audit
zurück.

So ganz langsam tendiere ich zu AHK...
...oder schnell vorher mit dem MRT den ersten Punkt löschen?

http://www.ghisler.ch/board/viewtopic.php?p=108011#108011
Name: [N]
Extension: #[E]
Search for: .| #
Replace with: -|.
Last edited by RID500 on 2007-06-12, 08:02 UTC, edited 1 time in total.
/join #TCMD Chat at irc.freenode.net - Today's newbies are tomorrow's experts.
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Wenn ich's richtig verstehe sollen aber nur die Erweiterung ".PDF" nicht mit angezeigt werden?!?
Dann mach noch 'nen Punkt davor, dann stimmt's.

Icfu
This account is for sale
User avatar
RID500
Member
Member
Posts: 194
Joined: 2006-11-20, 12:38 UTC

Post by *RID500 »

Nö, ICFU.

Ich verstehe Toms Anfrage anders als du. ("Problem sind die 2 Punkte bei den PDF-Files: ")
/join #TCMD Chat at irc.freenode.net - Today's newbies are tomorrow's experts.
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Kann gut sein. Auf Rätselraten steht mir heute nicht so der Sinn, vielleicht ein anderes Mal.

Icfu
This account is for sale
User avatar
tom*de
Senior Member
Senior Member
Posts: 394
Joined: 2003-02-25, 09:21 UTC

Post by *tom*de »

Sorry habs unklar ausgedrückt, wollte die Dateien die nicht auf .pdf enden:

Code: Select all

DIR /B /ON audit.* | findstr /V ".pdf"


geht prima, leider nicht in der FOR-Schleife:

Code: Select all

for /f "usebackq" %%i in (`DIR /B /ON audit.* | findstr /V ".pdf"`) do echo %%i
hier kommt: "|" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Tom - #81178 - 5 User licence - Klugheit, Gerechtigkeit, Tapferkeit und Mäßigung plus Kooperation.
User avatar
RID500
Member
Member
Posts: 194
Joined: 2006-11-20, 12:38 UTC

Post by *RID500 »

>wollte die Dateien die nicht auf .pdf enden
Aha, dann hat Icfu doch recht.

Hmm, die Pipe ist eine Verkettung von Befehlen bei der das Ergebnis des links stehenden Befehl als Eingabe für den rechts stehenen Befehl genommen wird. (zumindest standardmässig und ohne < Redirections)

Ich würde es daher mal so versuchen (nur von oben zusammenkopiert):

DIR /B /ON audit.* | findstr /V ".pdf" | COPY nul "%P_alles.txt" && FOR /F "tokens=*" %%I IN (%l) DO (COPY /B "%P_alles.txt" + %%I "%P_alles.txt")

(Du hast doch eine Datensicherung gemacht? :lol: ? )
/join #TCMD Chat at irc.freenode.net - Today's newbies are tomorrow's experts.
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

@tom*de:
In dem Fall mußt Du über eine temporäre Batchdatei gehen, Pipe ist in FOR-Kommandos nicht erlaubt.

Das kannst Du Dir so auf einen Button legen, alles im Kommandofeld (wichtig, sonst mißinterpretiert TC %tmp)

Code: Select all

%comspec% /k dir /b /on audit.* | findstr /v .pdf >%tmp%\list.txt && for /f %i in (%tmp%\list.txt) do echo %i
Icfu
This account is for sale
User avatar
Dalai
Power Member
Power Member
Posts: 10018
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

icfu wrote:Pipe ist in FOR-Kommandos nicht erlaubt.
Doch ist es, man muss es nur maskieren (mit ^):

Code: Select all

for /f "usebackq" %%i in (`DIR /B /ON audit.* ^| findstr /V ".pdf"`) do echo %%i
Genauso lassen sich übrigens auch die Umleitungen der Aus-/Eingabe maskieren. Sinnloses Beispiel:

Code: Select all

for /f %%i in ('DIR /B /ON audit.* ^> datei ^| findstr /V ".pdf"') do echo %%i
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
icfu
Power Member
Power Member
Posts: 6052
Joined: 2003-09-10, 18:33 UTC

Post by *icfu »

Doch ist es, man muss es nur maskieren (mit ^):
Na, da hat sich der Tag ja gelohnt heut'! :)
Danke für die Information.

Icfu
This account is for sale
User avatar
Dalai
Power Member
Power Member
Posts: 10018
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Danke für die Information.
Kein Problem.
Ich hing, als ich angefangen habe, mit diesem FOR-Kram rumzufummeln, auch bei diesem Problem.
Irgendwann, irgendwo hab ich dann gelesen, dass man maskieren kann in Batchdateien. Ist z.B. auch hilfreich, wenn man ein & per echo ausgeben will, oder ein >. Die muss man dann genauso maskieren, sonst will er das Zeug danach ausführen (&) oder umleiten (>) *grins*

Vom sonst üblichen Backslash halten die Leute in Redmond wohl nichts, dass sie extra ein anderes Zeichen einführen müssen. Liegt wohl daran, dass Pfade den schon verwenden. Tja, die Altlasten bzw. alte "Design"entscheidungen ...

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
tom*de
Senior Member
Senior Member
Posts: 394
Joined: 2003-02-25, 09:21 UTC

Post by *tom*de »

Der Tipp mit dem Maskieren, Respekt. Danke an alle für die Teamarbeit.

Damit hab ich den Join-Button 1.bar:

Code: Select all

...
cmd45=%COMSPEC% /c 
param45=COPY nul "%Paudit.all" && FOR /F  "tokens=*" %%I IN (%l) DO (COPY /B "%Paudit.all" + %%I "%Paudit.all")
path45=%COMSPEC%
button45=%SystemRoot%\system32\netshell.dll,102
menu45=Zusammenfügen der markierten Files in aktuellen Pfad\audit.all
und sogar eine Join.cmd

Code: Select all

@echo off
for /f "usebackq" %%i in (`DIR /B /ON audit.* ^| findstr /IV ".pdf"`) do echo %%i
echo.
echo alle angezeigten Dateien zu einer Datei audit.alles zusammenfügen...?
echo.
pause
echo zusammenfügen...
copy nul audit.alles&&for /f "usebackq" %%i in (`DIR /B /ON audit.* ^| findstr /IV ".pdf"`) do @(COPY /B audit.alles + %%i audit.alles)
echo fertig.
Tom - #81178 - 5 User licence - Klugheit, Gerechtigkeit, Tapferkeit und Mäßigung plus Kooperation.
Post Reply