Kommentar für mehrere Dateien

German support forum

Moderators: Hacker, Stefan2, white

User avatar
Stefan2
Power Member
Power Member
Posts: 4281
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

Leerzeichen? Welche Leerzeichen?
Leerzeichen würden hier nirgends stören.
Noch nicht einmal im %COMMANDER_PATH%

Ohhh, doch bei temp, wenn man ein Leerzeichen im Namen hat.

Set ListFile="%tmp%\File with Collection.txt"

Dann muss man wohl auch
type "%1"
schreiben?
Kann das mal bitte jemand aufklären? (würde mir nie einfallen ein Lerrzeichen im Benutzernamen zu haben...)

Ich habe zB "C:\Users\UserName\AppData\Local\Temp\CMD6B0D.tmp",
wie sieht das bei "C:\Users\User Name\AppData\Local\Temp\CMD6B0D.tmp" aus?
Wie auch immer,... "" stören ja nicht,... ich füge die noch oben ein.


Edit: ich habe auch noch das "%L" in quotes gesetzt,
da ja in diesem Pfad ebenfalls das Leerzeichen stecken würde:
"C:\Users\User Name\AppData\Local\Temp\CMD6B0D.tmp"



BTW: wenn das DOS-Fenster stört, wählt im Button-Einstellungsdialog "[X] Minimiert"
Daher habe ich eine "1" für "minimiert" dem Button hinzugefügt.


Daher ist das jetzt wohl hinfällig?:

Und %L sowie %F funktionieren beide.

Anscheinend wurden die einzelnen Felder im Button falsch ausgefüllt?

@Kerstin, poste mal deinen Button:
- rechter Mausklick auf den Button
- auf "Kopieren" klicken
- hier im Forum "Einfügen"





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

Post by *Dalai »

Stefan2 wrote:Leerzeichen? Welche Leerzeichen?
Leerzeichen würden hier nirgends stören.
Leerzeichen in Dateinamen/Pfaden stören immer die gewünschte Funktion einer Batch, deswegen muss man ja Anführungszeichen benutzen. Auch wenn keine Anführungszeichen nötig sind, weil keine Leerzeichen im Pfad sind - schaden tun sie nicht, daher lieber welche "zuviel" setzen.
Ohhh, doch bei temp, wenn man ein Leerzeichen im Namen hat.
Berücksichtigst du bitte auch, dass unter XP die Pfade völlig anders sind? Da is nix mit "C:\Users\blah\blub" sondern "%SystemDrive%\Dokumente und Einstellungen\blah\blub" (auf einem deutschen Win2k/XP), also so richtig schön mit Leerzeichen im Pfad, auch ohne deren Auftauchen im Benutzernamen.
Set ListFile="%tmp%\File with Collection.txt"
Nein, das ist die falsche Stelle. Anführungszeichen benutzt man in Batch niemals beim Setzen einer Umgebungsvariable. Dummerweise gibt's davon ein paar Ausnahmen, aber die spielen hier keine Rolle. Der Hintergrund ist, dass man auch sowas haben kann:

Code: Select all

REM Variante 1
set file="%temp%\blah mit leerzeichen\blubber mit leerzeichen"
set pfad=C:\zusatz

"%pfad%\%file%"

REM --------------------

REM Variante 2
set file=%temp%\blah mit leerzeichen\blubber mit leerzeichen
set pfad=C:\zusatz

"%pfad%\%file%"
Was passiert nun beim Benutzen der Variablen in der letzten Zeile der Variante 1? Die Anführungszeichen werden an die falsche Stelle gesetzt bzw. geschlossen, wo sie eigentlich nicht geschlossen gehören, oder sie werden verdoppelt. Oft geht das noch gut, aber wenn ein Skript komplexer wird, wundert man sich über die "lustigsten" Effekte. Daher: Anführungszeichen nur beim Benutzen der Variable setzen aber nicht beim Setzen mit set (siehe Variante 2)!
Dann muss man wohl auch
type "%1"
schreiben?
Ja!

Korrekt ist die Batch also wie folgt:

Code: Select all

@echo off

REM File to collect all selected files
REM Datei zum Sammeln aller selectierten Dateien
Set ListFile=%tmp%\FileCollection.txt

REM Type the content from the file, that TC parameter %L creates, into our list file
REM Schreibe den Inhalt der Datei, die der TC Parameter %L erzeugt, in unsere Sammeldatei
type "%1" >> "%ListFile%"

REM Show our list file (you may want to delete that line and open the file yourself once you are done)
REM Zeige uns unsere Sammeldatei (du kannst diese Zeile löschen und die Datei selbst öffnen, nachdem du fertig bist)
notepad "%ListFile%"
Edit: ich habe auch noch das "%L" in quotes gesetzt,
da ja in diesem Pfad ebenfalls das Leerzeichen stecken würde:
"C:\Users\User Name\AppData\Local\Temp\CMD6B0D.tmp"
Da weiß ich nicht genau, ob das nötig ist, weil TC vielleicht selbständig welche setzt. Aber ich glaub, das war nur bei der Kombination von %P%N und sonst nicht; daher kann's wohl nicht schaden.

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
Kerstin83
Senior Member
Senior Member
Posts: 341
Joined: 2007-11-25, 10:18 UTC
Location: Hannover

Post by *Kerstin83 »

so, ich habe genau das von Dalai geänderte Script probiert. Leider wird immer noch das Totalcommander Verzeichnis ausgelesen. Dazu noch irgendwelche Sachen irgendwo auf C:/. Kann da kein System erkennen.

Aber jetzt kommt eine Fehlermeldung im Dos-Fenster:
Das System kann den angegebenen Pfad nicht finden
Was kann das denn sein?

Liebe Grüße

Kerstin :D :D
Ich hasse Leute, die Sätze nicht zuende
User avatar
Kerstin83
Senior Member
Senior Member
Posts: 341
Joined: 2007-11-25, 10:18 UTC
Location: Hannover

Post by *Kerstin83 »

Ich muss mich korrigieren, ich hatte wegen der vielen Versuche den Parameter %L vergessen.

Mit Parameter ist es allerdings nicht besser. Es kommt die Fehlermeldung zwar nicht mehr, aber die ausgegebene Dateiliste ist die gleiche (Totalcommander-Pfad und weiteres) *heul* :?

Liebe Grüße

Kerstin :D
Ich hasse Leute, die Sätze nicht zuende
User avatar
Dalai
Power Member
Power Member
Posts: 9977
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Hast du Anführungszeichen um %L?

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
Kerstin83
Senior Member
Senior Member
Posts: 341
Joined: 2007-11-25, 10:18 UTC
Location: Hannover

Post by *Kerstin83 »

ja, hab ich. Wie bei den anderen Scripten auch.

Funktioniert das Script bei euch denn?

LG

Kerstin :D
Ich hasse Leute, die Sätze nicht zuende
User avatar
Dalai
Power Member
Power Member
Posts: 9977
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Kerstin83 wrote:Funktioniert das Script bei euch denn?
Bei mir unter XP: ja, einwandfrei.

Ich hab das von mir korrigierte Skript benutzt, unter C:\CollectFiles.cmd abgelegt, dann irgendwelche Dateien markiert und anschließend diesen Button erzeugt & benutzt:

Code: Select all

TOTALCMD#BAR#DATA
c:\CollectFiles.cmd
"%L"
D:\WINDOWS\System32\shell32.dll,-153
CollectFiles


-1
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
Kerstin83
Senior Member
Senior Member
Posts: 341
Joined: 2007-11-25, 10:18 UTC
Location: Hannover

Post by *Kerstin83 »

hmmm, ich habe es genau so gemacht und die .cmd Datei nach C gelegt u.s.w. Immer das gleiche Ergebnis.

Ihr wollt mich doch nicht etwa hochnehmen? :?
Oder woran kann dette denn liegen?

Viele Grüße

Kerstin :D
Ich hasse Leute, die Sätze nicht zuende
User avatar
Dalai
Power Member
Power Member
Posts: 9977
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Kann es sein, dass du einem Irrtum unterliegst? Das Skript schreibt nicht bei jedem Aufruf die Liste der selektierten Dateien komplett neu, sondern hängt diese an die bereits bestehende Datei/Liste an. Sofern du die Datei/Liste also nicht leerst/löscht/kürzt, wirst du immer wieder dieselbe Liste bekommen, nur ergänzt um die nun selektierten Dateien.

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
tuska
Power Member
Power Member
Posts: 4064
Joined: 2007-05-21, 12:17 UTC

Post by *tuska »

Im Button von Dalai wird "D:\WINDOWS\System32..." - Laufwerk D: angegeben. Kann es sein, dass hier auf Laufwerk C: angepaßt werden muß?
Gruß,
Karl
User avatar
Dalai
Power Member
Power Member
Posts: 9977
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

tuska wrote:Im Button von Dalai wird "D:\WINDOWS\System32..." - Laufwerk D: angegeben. Kann es sein, dass hier auf Laufwerk C: angepaßt werden muß?
Jein. Die Zeile mit diesem Pfad gibt lediglich das Symbol/Icon des Buttons an. Wird das Icon nicht gefunden, zeigt TC kein Symbol für diesen Button an, der Button existiert und funktioniert aber trotzdem.

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
Stefan2
Power Member
Power Member
Posts: 4281
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

Ohh, ihr wart ja fleißig.

Dalai > Leerzeichen in Dateinamen/Pfaden stören immer
Schon klar, nur hatte ich da zuerst keine Leerzeichen gesehen.

Dalai > Berücksichtigst du bitte auch, dass unter XP die Pfade völlig anders sind?
Upps, Stimmt ja. Hatte ich bereits erfolgreich verdrängt.


Dalai > Anführungszeichen benutzt man in Batch niemals beim Setzen einer Umgebungsvariable.
Das kann ich so nicht unterstreichen.
Es mach sehr wohl Sinn, die Anführungszeichen gleich beim Setzen einer Umgebungsvariable anzugeben.
Dadurch braucht man das nur an einer Stelle zu tun.
Wenn man natürlich so was konstruiert wie in deinem Beispiel, muss man aufpassen was man macht.


 
User avatar
Stefan2
Power Member
Power Member
Posts: 4281
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Post by *Stefan2 »

Kerstin83 wrote:Oder woran kann dette denn liegen?
Wie angeboten, poste mal deinen Button, waah?
Und am Besten noch den Inhalt deiner Batch.
Welches Betriebssystem benutzt du?
User avatar
Kerstin83
Senior Member
Senior Member
Posts: 341
Joined: 2007-11-25, 10:18 UTC
Location: Hannover

Post by *Kerstin83 »

Kann es sein, dass du einem Irrtum unterliegst?
:D ja, scheint so zu sein. Ich dachte nicht, dass die Textdatei gespeichert wird.
Funktioniert jetzt. Danke. Das erklärt auch die völlig willkürliche Liste.
Und das %F geht auch. :D

Allerdings stört das schon ein bisschen. Kann man die Liste vorher irgendwie clearen?

Und als Speicherpfad wäre das aktuelle Verzeichnis super. Müsste ich dann nicht immer suchen...

@Stefan:
wo ist dieser code für die Buttons eigentlich. Eine usercmd.ini habe auf dem gesamten Laufwerk nicht gefunden.

Viele Grüße

Kerstin :D :D
Ich hasse Leute, die Sätze nicht zuende
User avatar
Dalai
Power Member
Power Member
Posts: 9977
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Kerstin83 wrote:Allerdings stört das schon ein bisschen. Kann man die Liste vorher irgendwie clearen?
Ich denke, Stefan hat das mit Absicht so gemacht, um erstmal alles zu sammeln in einer Textdatei; steht ja auch so in den Kommentaren des Batch-Code und natürlich den Posts von Stefan ;).

Aber, ja, man kann die Liste vorher leeren, aber dann brauchst du auch kein Skript mehr und kommst mit der von mir ganz am Anfang des Themas vorgschlagenen Methode aus: Menü Markieren > Auswahl in Datei speichern. Das hat sogar den Nebeneffekt, dass das aktuelle Verzeichnis vorgeschlagen als Speicherort wird.

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