Anzeige

Am Puls von Microsoft

Anzeige

Batch-Stringoperationen lassen sich nicht anwenden

hago

kennt sich schon aus
Hallo,

ich habe diese Batch-Zeile:
Code:
For %%F in (*.txt) Do ("%programfiles%\GnuWin32\bin\iconv.exe" -f iso-8859-1 -t utf-8 %%F > %%~nxF
Auf die Variable am Ende würde ich gerne Stringoperationen anwenden.

%%F hat den Wert "menuA.txt"
So habe ich es versucht: %%~nxF:~0,-1%x
erhalten möchte ich damit "menuA.txx"

Ich könnte natürlich einfach ...> %%~nF.txx schreiben, aber das will ich nicht, weil ich das ganze auch auf andere Dateitypen anwenden will, die dann nicht mehr identifizierbar wären.

Grüße, Hago
 
Anzeige
Startest du das in der Konsole?
Was gibt es für eine Ausgabe/Fehlermeldung?
Hast du die Zeile mal solo ausgeführt?
 
Das hier ist das Ergebnis auf der Konsole, wenn ich nur diese Zeile starte:
C:\xampp\htdocs\aserver\Zentriert\inc>("C:\Program Files\GnuWin32\bin\iconv.exe" -f iso-8859-1 -t utf-8 menuB.txt ,-1%x 1>
menuB.txt:~0 )
iconv: ,-1%x: No such file or directory

Wenn ich die Zeile als Batch starte, bekomme ich die gleiche Meldung, nur am Ende fehlt das % zwischen 1 und x
 
Du hast nur die Konsole abgeschrieben, stimmts?
Das 'C:\xampp\htdocs\aserver\Zentriert\inc>' ist bestimmt der Prompt, oder?
Man kann nicht erkennen, wo eine Zeile zu Ende ist. Benutze bitte den #-Container oben.
Code:
C:\xampp\htdocs\aserver\Zentriert\inc>
("C:\Program Files\GnuWin32\bin\iconv.exe" -f iso-8859-1 -t utf-8 menuB.txt ,-1%x 1> menuB.txt:~0 )
 iconv: ,-1%x: No such file or directory
Sortiere das mal bitte.

Ich bin jetzt nicht der Batch-Spezi, DOS-Befehle in den richtigen Syntax zu bringen, schaffe ich schon.

Die Ausgabe sagt ja, das keine Datei gefunden wurde. Wo ist also die Eingabedatei und wie heißt sie?
 

Anhänge

  • Zwischenablage01.jpg
    Zwischenablage01.jpg
    47,6 KB · Aufrufe: 123
Zuletzt bearbeitet:
Also, hier nochmal ganz ausführlich (hab' ich aber eigentlich im ersten Beitrag schon geschrieben) Das ist der Code der Batch Datei:
Code:
For %%F in (*.txt) Do ("%programfiles%\GnuWin32\bin\iconv.exe" -f iso-8859-1 -t utf-8 %%F > %%~nxF:~0,-1%x)

::Ergibt diese Ausgabe:

C:\xampp\htdocs\aserver\Zentriert\inc>For %F in (*.txt) Do ("C:\Program Files\GnuWin32\bin\iconv.exe" -f iso-8859-1 -t utf
-8 %F ,-1x 1>%~nxF:~0 )

C:\xampp\htdocs\aserver\Zentriert\inc>("C:\Program Files\GnuWin32\bin\iconv.exe" -f iso-8859-1 -t utf-8 menu.txt ,-1x 1>me
nu.txt:~0 )
iconv: ,-1x: No such file or directory

In der Konsole habe ich, wie gesagt, die gleiche Ausgabe.
Die Zeilenumbrüche in Zeile 5 und 8 stammen vom Formularfenster hier.

Die Fehlermeldung aus #3 rührt von ',-1%x'.
',-1%x' wird als eine Datei aufgelöst.
Ja, das ist mir klar.
Deshalb würde es mich sehr interessieren, ob es eine Möglichkeit gibt, zu erreichen, dass es als Stringoperation behandelt wird.

%%~nF.txx ergibt menuA.txx
Deshalb habe ich versucht: %%~nxF:~0,-1%x
erhalten möchte ich damit "menuA.txx"
 
Zuletzt bearbeitet von einem Moderator:
Das ist die Stelle, wo ich nicht weiter komme.
%%~nxF:~0,-1%x sind für mich kryptische Zeichen. DOS ja, Batch nein. Was den Fehler verursacht hat, habe ich dir jetzt gezeigt.

Oder, du sagst mir, was ich mit solchen Operatoren mache. Dann kann ich mich auch mal damit befassen. Wenn nicht, warten wir auf andere Beiräge. :)
 
Danke für die Nachtlektüre. :)

Fangen wir mal ganz vorne an. Der Syntax von iconv lautet:
iconv [-sc] -f oldset -t newset [file ...]

Auf dein Beispiel angewendet:
iconv.exe -f iso-8859-1 -t utf-8 menuB.txt ,-1%x 1> menuB.txt:~0
Damit ist alles zwischen utf-8 und > die Eingabedatei; die Ausgabe geschieht in alles nach '>'.

Du versuchst, 'iconv' eine Stringoperation unterzujubeln. Das wehrt sich aber mit einer Fehlermeldung. Stringoperationen habe ich deinem Link immer nur in Zusammenhang mit Variablen gesehen.

So wie ich das erkannt habe, bleibt dir nur übrig, ein rename vor oder nach der Konvertierung einzubauen.
Dazu den Link https://www.webmasterworld.com/forum40/1537.htm
 
Tja, danke jedenfalls.
Ich habe gehofft, es läge eventuell nur an einem nicht gesetzten Anführungszeichen oder an der falschen Verwendung der %-Zeichen...
 
Danke für die Links.
Das sieht ja interessant aus.

Hago
 
Anzeige
Oben