Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Zeilenumbruch und Leerzeichen entfernen

Frage Entwicklung Batch & Shell

Mitglied: 62436

62436 (Level 1)

06.03.2008, aktualisiert 07.03.2008, 14629 Aufrufe, 5 Kommentare

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
Mitglied: Biber
06.03.2008 um 07:15 Uhr
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:
01.
@echo off & setlocal 
02.
set "Ordner=%cd%" 
03.
:Proof 
04.
If EXIST M:\ ( 
05.
start M:\Programme\PStart\PStart.exe 
06.
echo %ordner%>M:\Programme\PStart\Ordner.txt 
07.
exit 
08.
) ELSE ( 
09.
Goto Proof 
10.
)
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
Bitte warten ..
Mitglied: 62436
07.03.2008 um 00:02 Uhr
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:

01.
@echo off & setlocal 
02.
Set /p LW=<LW.txt 
03.
explorer %LW% 
04.
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

01.
@echo off 
02.
explorer M:\ 
03.
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.
Bitte warten ..
Mitglied: Biber
07.03.2008 um 09:40 Uhr
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
Bitte warten ..
Mitglied: 62436
07.03.2008 um 14:28 Uhr
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
Bitte warten ..
Mitglied: Biber
07.03.2008 um 17:00 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Leerzeichen per Batch entfernen vor der Weiterbearbeitung (3)

Frage von daHartl zum Thema Batch & Shell ...

Microsoft Office
gelöst Dropdownlisten in Abhängigkeit mit Leerzeichen im Namen (Datenüberprüfung) (2)

Frage von kevische zum Thema Microsoft Office ...

Batch & Shell
gelöst Appx aus Image auslesen und entfernen (9)

Frage von Markus2016 zum Thema Batch & Shell ...

CPU, RAM, Mainboards
CPU Lüfter von CPU entfernen (6)

Frage von uridium69 zum Thema CPU, RAM, Mainboards ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...