62436
Goto Top

Zeilenumbruch und Leerzeichen entfernen

Schönen guten Abend liebe Forumsmitglieder,

ich habe mich nun extra hier angemeldet, weil leider kein Beitrag meinen Kriterien entsprach oder mir unverständlich war.

Vorweg: Ich bin NICHT mit cmd aufgewachsen, und dennoch kann ich ein wenig damit umgehen. Allerdgings sind mir verschachtelte Codes mit "For %%xy >>=" etwas zu kompliziert. Ich habe ein wenig mit VB gearbeitet und dagegen ist DOS doch ein wenig pragmatischer und weitaus weniger selbsterklärend.

Nun zum Problem:

Ich binde auf einem USB-Stick(!!!) ein TC-Volume ein und zwar immer auf den Buchstaben M!

Es entsteht also ein virtuelles Laufwerk M:\

Ich starte nach dem Mounten eine Datei (PStart.exe) IN diesem Container.

Mit folgendem Code möchte ich den Namen des Verzeichnisses des USB-Sticks auf das Laufwerk M kopieren:

@echo off
set Ordner=%cd%
:Proof
If EXIST M:\ (
start M:\Programme\PStart\PStart.exe
echo %ordner% >M:\Programme\PStart\Ordner.txt
exit
) ELSE (
Goto Proof
)

Das mache ich zu dem Zweck, da ja der Laufwerksbuchstabe des USB-Sticks variieren kann!

Die Textdatei wird brav nach M:\... (usw.) geschrieben, allerdings sieht sie so aus:

Inhalt von Ordner.txt:
"F:\System

"

Es wurde also nach "F:\System" ein Leerzeichen eingefügt und danach noch ein Zeilenumbruch.

Warum macht DOS das? Und wie bekomme ich das ohne die Zeichen hin?

Ich mächte die Textdatei nämlich nachher hiermit auslesen (bitte verbessern, falls es einfacher/besser geht - bspw. habe ich die Funktion von set /p nicht so ganz verstanden - heißt das /p quasi 'anders herum'?):

@echo off
taskkill /t /f /im pstart.exe
Set /p Ordner=<ordner.txt
start %Ordner%\TrueCrypt\TrueCrypt.exe [Parameter] '--> zum Schließen des Volumes!

Bitte, bitte helft mir weiter, und zwar einigermaßen verständlich. Die angesprochenen Themen, die das Entfernen von Zeilenumbrüchen und Leerzeichen behandelten, habe ich nicht verstanden, oder sie haben nicht funktioniert!!!

Danke schon einmal.

Mattes

Content-Key: 82439

Url: https://administrator.de/contentid/82439

Printed on: April 23, 2024 at 06:04 o'clock

Member: Biber
Biber Mar 06, 2008 at 06:15:36 (UTC)
Goto Top
Moin mattes1988,

willkommen im Forum.

Vorab zwei Anmerkungen.

Für Codeschnipsel haben für ein Schweinegeld von einem armenischen Händler so genannte Code-Tags für dieses Forum gekauft. Diese können von allen angemeldeten BenutzerInnen ohne weitere Kosten oder Formalitäten mitbenutzt werden. Näheres siehe in den FAQ unter Formatierungen.

Zweitens, wenn Dir ein Beitrag in dem Nebenarm des Forums, in dem ich als Moderator zuständig bin, unverständlich erscheint, dann füge ruhig eine Nachfrage als Kommentar an.
Oder schicke mir eine PN, falls der Beitrag geschlossen ist - dann wird der halt wieder geöffnet.
Gilt sinngemäß auch bei den anderen ModeratorInnen/Forumsbereichen.

Zu Deiner Frage:
@echo off & setlocal
set "Ordner=%cd%"  
:Proof
If EXIST M:\ (
start M:\Programme\PStart\PStart.exe
echo %ordner%>M:\Programme\PStart\Ordner.txt
exit
) ELSE (
Goto Proof
)

Ich habe 3 kleine Änderungen gemacht.
1. Das " & setlocal" in der ersten Zeile ergänzt, denn Du verwendest in der Folgezeile ein SET.
Das heißt, Du setzt eine Variable, die nur Du bzw nur dieser Schnipsel braucht, also eine "lokale Variable".

2. Einschließende Anführungszeichen hier: Set "ordner=%cd%"
Ist undokumentiert und vielleicht auch nur eine persönliche Marotte von mir, aber damit vermeide ich unabsichtliche Leerzeichen hinter dem Variablenwert.

3. Leerzeichen vor dem ">" /Umleitungssymbol entfernt hier: echo %ordner%>M:\...

Damit sollte dieses trailing blank Geschichte sein.

Der ECHO-Befehl hängt immer und seit immer einen Zeilenumbruch an - kannst Du nicht umgehen. Da aber nicht nur die CMD-Schreib/Ausgabe-Befehle IMMER mit CRLF/zeilenorientiert arbeiten, sondern auch alle Lese/Eingabebefehle wie z.B. das "Set/P var=<datei.xyz" ist das KEIN Problem. Der Zeilenumbruch am Ende einer Zeile sollte bei Batchverarbeitung nie stören.

Probiere bitte nochmal mit meinen Änderungen den Inhalt der erzeugten Datei.

Grüße
Biber
Mitglied: 62436
62436 Mar 06, 2008 at 23:02:06 (UTC)
Goto Top
Hey Biber,

danke für deine ausführliche Beschreibung und die Anpassung des Codes an meine Bedürfnisse!!
Hatte zwar noch einige Schwierigkeiten, beim Wechsel der Verzeichnisse auf dem Stick und auf dem Volume M, aber es ging alles glatt!

Jetzt habe ich folgende Frage, die ein nicht ganz so gravierendes Problem als Ursache hat:

Wenn ich mit dem Befehl:

@echo off & setlocal
Set /p LW=<LW.txt
explorer %LW%
exit

das Laufwerk LW aufrufen möchte, klappt dies wunderbar, allerdings, öffnet sich nach einigen Sekunden (>5) Verzögerung* immer ein leeres DOS-Fenster, welches KEINE Funktion hat (m.E.). Wieso kommt dieses immer hervor? Ich habe ja sogar explizit ein EXIT angegeben. Ich bin ratlos. Genau so verhält es sich, wenn ich das virtuelle Volume mit

@echo off
explorer M:\
exit

öffnen möchte... Komisch.

Danke nochmal,
Mattes

*Die Verzögerung kommt glaube ich durch mein OS (=Vista) zu Stande, und auch immer NUR, wenn irgendwas "schief" läuft. Zum Beispiel hatte ich öfter ne .cmd-Datei, die TrueCrypt.exe aufrufen sollte, es nicht gefunden hat, aber erst nach ca. 5 - 6 Sekunden eine Warnmeldung raus gab.
Member: Biber
Biber Mar 07, 2008 at 08:40:50 (UTC)
Goto Top
Moin mattes1988,

auf die Folgefrage habe ich auch keine spontane Antwort.

Du könntest mal untersuchen, ob denn auch die explorer.exe "gefunden" wird oder da vielleicht noch unabsichtlich eine "explorer.bat" oder "explorer.cmd" dazwischenhängt.
Und schneller sollte es ohnehin gehen, wenn Du den Explorer so aufrufst:
Start "irgendein Titel oder auch keiner" explorer.exe %lw%

Aber, wie geschrieben, eine wirkliche Antwort habe ich nicht, und da außer uns beiden niemand in diesem Beitrag mitliest wäre es am Besten, wir machen hier einen Haken dran und Du stellst die Frage noch mal in einem neuen Thread.

Grüße
Biber
Mitglied: 62436
62436 Mar 07, 2008 at 13:28:22 (UTC)
Goto Top
Wieso liest denn hier keiner mit?

Kannst Du mir eventuell dabei helfen, den zu markieren, bzw. mir sagen, WO ich ihn sonst reinstellen soll?

Lg
Member: Biber
Biber Mar 07, 2008 at 16:00:47 (UTC)
Goto Top
Moin mattes,

kopiere doch Deine Problembeschreibung von heute morgen und mach einen neuen Beitrag mit passender Überschrift auf ("Explorer-Aufruf aus Batchdatei öffnet weiteres CMD-Fenster") oder ähnlich. Kann ja ruhig in "Batch & Shell" stehen.

Von mir aus kannst Du auch in diesemm Beitrag hier warten, aber wer sollte unter der Überschrigt "Zeilenumbriuch entfernen" so ein Problem suchen wollen?

Grüße
Biber