62436
Mar 05, 2008, updated at Mar 07, 2008 (UTC)
17220
5
0
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
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 82439
Url: https://administrator.de/contentid/82439
Printed on: April 23, 2024 at 06:04 o'clock
5 Comments
Latest comment
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:
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
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
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:
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
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
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
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