WinFuture-Forum.de: Zeilenvorschub (line feed) mit batch Datein auf NTFS Festplatten ,gibt - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Zeilenvorschub (line feed) mit batch Datein auf NTFS Festplatten ,gibt Pfadeingaben mit caret Symbol


#1 Mitglied ist offline   ledlightjungled 

  • Gruppe: aktive Mitglieder
  • Beiträge: 34
  • Beigetreten: 22. Januar 14
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 10. Juni 2014 - 21:07

Der letzte Versuch meine Suche zu beenden ,endete auf der Seite SS64.com.

Ich werde meine Batchdatei Eingabe aufListen und dann meine Frage stellen.

@echo off
rem @
rem @
setlocal

set Datei=Tippfehler

rem @
rem @

echo %Datei%

endlocal
rem @
rem @

for /F "usebackq" %%A in ("C:\Dokumente und Einstellungen\Benutzername\Desktop\Neuer Ordner\Textdokument.txt") do set Datei=%%A

type C:\"Dokumente und Einstellungen"^
\Benutzername\Desktop\"Neuer Ordner"\Textdokument.txt

rem @
rem @

echo.

rem @
rem @

echo %Datei%

rem @
rem @

set Datei=

rem @
rem @
pause

Aufgrund der Formatierung meiner Festplatte mit NTFS und nicht mit FAT32 ,muss ich bei Pfadeingaben in Batchdateien die Pfadnamen und Dateinamen die Leertastenabstände enthalten immer mit doppeltem Anführungszeichen führen.

In der Zeile mit dem type Befehl kann ich ein caret Zeichen verwenden (das ist das spitze Dach Zeichen adü) um einen führbaren Zeilenvorschub zu erreichen.

Die Zeile vor dem type command in der ein for /F command steht kann ich auch in doppelte Anführungszeichen setzen mit der Angegebenen "usebackq" Option
dennoch kann ich nicht ein caret Zeichen als Zeilenvorschub so verwenden das eine Ausgabe der Textdatei sichtbar ist ,sondern nur eine leere CMD Prompt Pfadangabe.

Falls es in diesem Forum eine mögliche Antwort geben wird könnte es sein das ich nicht stundenlang im Internet suche.

Freundliche Grüße Stefan
0

Anzeige



#2 Mitglied ist offline   hoschen 

  • Gruppe: aktive Mitglieder
  • Beiträge: 748
  • Beigetreten: 12. Februar 04
  • Reputation: 2

geschrieben 11. Juni 2014 - 07:00

Erstmal wäre es Hilfreich, wenn Du uns etwas mehr Infos zu deinem System gibst!

Und nur zum Verständnis: warum willst Du das ^ - Zeichen in der Batch haben?

Diese beiden Befehle funktionieren so:

for /F "usebackq" %%A in ("C:\Dokumente und Einstellungen\Benutzername\Desktop\Neuer Ordner\Textdokument.txt") do set Datei=%%A

type "C:\Dokumente und Einstellungen\Benutzername\Desktop\Neuer Ordner\Textdokument.txt"


0

#3 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.336
  • Beigetreten: 08. April 06
  • Reputation: 887
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 11. Juni 2014 - 08:22

Ich habe leider Probleme durch die mangelnde Formatierung des TEs schlau zu werden was genau gemeint/gewollt ist bzw. wo es harkt.

@hoschen:

wobei ich den Befehl gleich noch universeller gestallten würde durch die Verwendung von nunmal existierenden Systemvariabeln:

for /F "usebackq" %%A in ("%USERPROFILE%\Desktop\Neuer Ordner\Textdokument.txt") do set Datei=%%A

type "%USERPROFILE%\Desktop\Neuer Ordner\Textdokument.txt"




so funktioniert das sogar wenn der Desktop/Userordner woanders hin ausgelagert wurde - oder wenn als System bspw. Windows Vista oder neuer verwendet wird da hier der User-Ordner nicht mehr hard auf

C:\Dokumente und Einstellungen\[USERNAME]



bzw. in der englischen Version unter

C:\Documents and Settings\[USERNAME]



liegt sondern schlicht auf

C:\USERS\[USERNAME]



das abgreifen der Systemvariabel macht dann ein großes "Umprogrammieren" überflüssig.
0

#4 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.902
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 11. Juni 2014 - 08:51

Irgendwie werd ich weder aus der Frage noch aus dem Quellcode schlau.

Was soll das leisten? :unsure:

- Die REM @ sind überflüssig. Weg damit.
- Der SETLOCAL / ENDLOCAL -Block ist ebenfalls überflüssig, es sei denn es soll einfach "Tippfehler" ausgegeben werden. Das kann man aber auch mit einem simplen echo haben.
- Die USEBACKQ Option ist nicht nur überflüssig, sondern komplett falsch an dieser Stelle. Außerdem fehlt in FOR /F die Formatangabe (und sei es nur ein *). Mit dem usebackq wird die ZEICHENFOLGE in den Klammern betrachtet. Ohne das usebackq gibt es den Inhalt der benannten Datei.
- Und schließlich sollte das %%A in Anführungszeichen. Sonst geht das in dem Moment schief, wo in der fraglichen Textdatei ein Leerzeichen steht.
- Sicherheitshalber: in der Textdatei darf GENAU EIN EINTRAG PRO ZEILE stehen. Nicht mehr.
- Und das caret ist in Batchdateien für mehrteilige Eingaben da, nicht um vorhandenen Code umzubrechen und schon gar nicht als eine Art von Bindestrich (um lange Dateinamen umbrechen zu können). Für mehrteilige BEFEHLE gibt's in Batch die runden Klammern ( und ), wobei die öffnende Klammer immer auf derselben Zeile wie der Befehl stehen muß.
-- Referenz: Command line syntax @TechNet

Dieser Beitrag wurde von RalphS bearbeitet: 11. Juni 2014 - 08:59

"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#5 Mitglied ist offline   ledlightjungled 

  • Gruppe: aktive Mitglieder
  • Beiträge: 34
  • Beigetreten: 22. Januar 14
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 11. Juni 2014 - 10:28

Mit Windows XP ,dass ich zumschreiben der Textdateien respektive Batchdatein verwende versuche ich solange einen Weg zu gehen ,solange

sich etwas finden lässt Zeichenketten (strings) zu manipulieren.

Es gibt wennmöglich eine bessere Variante ,dennoch versuche ich mit dem Windows XP System mein suchen und finden von Zeichenketten

für mich zu optimieren.

Die Idee mit der Variable %userprofile% steht schon auf meiner Liste für to do's ,und versuche die Pfade noch immer voll Auszuschreiben

,den ich lerne carriage returns und line feeds so wie escape sequenzen mittles batch Dateien zu kennen.

Was ich verstehen konnte versuche ich auch hier weiter zu führen.

So würde ich auch gerne wissen was mit der Formatangabe für for /F Befehle gemeint ist und nachdem mit dem type Befehl es möglich war die

Pfadangabe im Text umzubrechen würde ich das auch gerne im for /F Befehl machen können.

Und im Hilfe und Support Center für Windows XP steht ,dass mit dem type Befehl auf NTFS Formatierten Festplatten doppelte Anführungszeichen

für Pfadangaben verwendet werden MUSS . Da ich dies nicht für andere Befehle auch lesen könnte ,besteht die Möglichkeit das es für den

for /F Befehl nicht möglich ist. Falls sich doch noch was findet hilft mir das sicher.

Da ich mich bei batch Datein auf die Stringmanipulation konzentriere und die geöffneten Fensterformate unterschiedlich sind ,möchte

ich die Zeilenumbrüche verwenden lernen. Ich danke euch für das feedback im voraus ,und hoffe noch ein paar Antworten erpressen zu können.

Lg Stefan
0

#6 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.336
  • Beigetreten: 08. April 06
  • Reputation: 887
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 11. Juni 2014 - 13:46

Kannst du bitte mal in deinem Post etwas Übersicht schaffen? mit den ganzen - teils unsinnigen - Zeilenumbrüchen kann ich das leider sehr schwer lesen.

Danke!

EDIT:
habe mir deinen Post mal in MS-Word zurechtgebogen... aber irgendwo geht da die Logik verloren - und zwar achtkanntig.

Bitte korrigere mal deinen Post (beseitige die logischen Fehler). Danke!

Dieser Beitrag wurde von Stefan_der_held bearbeitet: 11. Juni 2014 - 14:20

0

#7 Mitglied ist offline   ledlightjungled 

  • Gruppe: aktive Mitglieder
  • Beiträge: 34
  • Beigetreten: 22. Januar 14
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 11. Juni 2014 - 18:43

ok mach ich
0

#8 Mitglied ist offline   ledlightjungled 

  • Gruppe: aktive Mitglieder
  • Beiträge: 34
  • Beigetreten: 22. Januar 14
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 12. Juni 2014 - 18:29

Auf einer NTFS formatierten Festplatte muss ich Pfadangaben,
mit Leertaste Abständen in doppelten Anführungszeichen
eingeben.
Zum Beispiel mit dem Befehl type für die CMD Befehlszeile:

type C:\"Dokumente und Einstellungen"\"Neu Textdokument".txt

Mit dem for /F Befehl kann ich mittels "usebackq" option die
gesamte Pfadeingabe und nicht nur die Pfadnamen in doppelten
Anführungszeichen angeben.
Zum Beispiel:

for /F "usebackq" %%A in ("C:\Dokumente und Einstellungen\Neu Textdokument.txt") do echo %%A

Wenn ich nun zwei Fenster geöffnet habe eines von Notepad
und ein MSPaint Fenster, habe ich weniger Platz zum schreiben.
Deswegen verwenden ich das Caret Zeichen ^ für einen
Zeilenumbruch.
Zum Beispiel:

type C:\"Dokumente und Einstellungen"^
\"Neu Textdokument".txt

Ich würde gerne das selbe mit dem for /F Befehl erreichen
dennoch ist mir das nicht möglich.
Deswegen würde ich gerne wissen, ist dass möglich und
wenn ,wie oder warum dass nicht möglich ist wenn es nicht
möglich ist um Fehlerausgaben besser verstehen zu lernen.

Ich arbeite auf einem Windows XP System mit dem schreiben
von Batchdatein. Ich freue mich wenn meine Bitte nach einer
Antwort in Erfüllung geht.

Stefan
0

#9 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.336
  • Beigetreten: 08. April 06
  • Reputation: 887
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 12. Juni 2014 - 19:30

Ah!

langsam wird es mir klar - es geht dir rein um das AUSLESEN einer Datei welche bereits existiert? also ohne irgendeine Neueingabe?

Wieso verwendest du denn da "type"? bist du da so sehr auf die Kommandozeile angewiesen?

Du hast auch Notepad angesprochen. Hier kannst du unter

Ansicht > Zeilenumbruch



dafür sorgen, dass so oder so bei jedem " " ein Zeilenumbruch automatisch angezeigt wird sobald der Gesamttext nicht mehr in die aktuelle Fensterbreite passt. Ansonsten wird das gesamte Wort umgebrochen.

Bin aktuell leider nicht 100prozent auf geistiger Höhe (den Schmerzmitteln sei Dank)
0

#10 Mitglied ist offline   ledlightjungled 

  • Gruppe: aktive Mitglieder
  • Beiträge: 34
  • Beigetreten: 22. Januar 14
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 13. Juni 2014 - 20:01

Um mein Wissen diesbezüglich zu einem Ende zu bringen, werde ich
versuchen mir noch Wissen anzueignen. Soweit ich meine Sammel
eigenschaft zu Wort bringen kann, hab ich noch folgendes ergänzend
beizutragen.

Es ist wie in dem Post geschrieben steht, im Editor den Mauszeiger
oder die Tastenkombination mit den Befehlen

Ansicht Zeilenumbruch

führen, der Zeilenumbruch ist mittels der Fenstergröße variierbar.
Es ist nicht möglich, wenn der Pfadname nur mit der Entertaste
gebrochen wird, eine Ausgabe eines Echobefehls im for /F Befehl
zu erhalten.
Auch wenn beides gleich aussieht, ist es nicht dasselbe.

Mit den Informationen von der Seite stackoverflow.com, kann ich
noch folgendes beitragen.

@echo off

set MYDIR ="C:\Dokumente und Einstellungen\"

for /F "usebackq" %%A in (%MYDIR%^
"Textdokument.txt") do echo %%A

Damit kann ich mit einem caret Zeichen, auch mit dem for /F
Befehl einen Zeilnumbruch machen. Wobei es zu beachten gilt ,dass
zwischen dem im Text eingefügtem MYDIR = und dem ist gleich Zeichen
ein Leertasten Abstand stehen muss und auch zwischen dem caret
Zeichen und dem in der nächsten Zeile "Textdokument.txt". Dies kann
sowohl ein Tabulator Leerzeichen sein wie auch ein Leerzeichen mit
der Leertaste.

In wie weit das mit einer variablen Fenster Größe, Breite in einem
Zusammenhang stehen kann muss ich noch verstehen lernen wenn ich will.

Ich konnte in dem Forumfenster kein Tabulator Abstand einfügen, da
dies hier nicht möglich ist.

Stefan
0

#11 Mitglied ist offline   ledlightjungled 

  • Gruppe: aktive Mitglieder
  • Beiträge: 34
  • Beigetreten: 22. Januar 14
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 14. Juni 2014 - 10:08

Sorry,

der Effekt den ich im gestrigen Post beschrieben habe, bezüglich des caret Zeichens
und den Abständen die man einhalten muss resultierte aus einem blinden Versuch
etwas zu verstehen.
Das caret Zeichen in der for /F commando Zeile hat genau so wenig Effekt wie die
%MYDIR% Variable. Ich kann genau so gut schreiben

for /F "usebackq" %%A in (%HAHA%
"Textdokument.txt") do echo %%A

Der Zeilenumbruch ist möglich wegen den Klammern und nicht wegen dem caret Zeichen.
Und somit kann ich "Textdokument.txt" auch nur in dem Ordner verwenden in dem es
gespeichert ist.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0