Top-Themen

Aktuelle Themen (A bis Z)

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

Batch soll Sonderzeichen nicht als solche interpretieren

Mitglied: ForgottenRealm

ForgottenRealm (Level 1) - Jetzt verbinden

19.07.2011, aktualisiert 09:46 Uhr, 6883 Aufrufe, 5 Kommentare

Guten Morgen


Ich lese aus einer CSV Datei mehrere Variablen wie folgt ein:

Zeile=Variable1;Variable2;Variable3 ...

for /F "tokens=1-7 delims=;" %%A IN ("%Zeile%") DO (
Call set "Var1=%%A"
Call set "Var2=%%B"
Call set "Var3=%%C"
Call set "Var4=%%D"
Call set "Var5=%%E"
Call set "Var6=%%F"
Call set "Var7=%%G"
)

Wenn jetzt eine der Variablen & oder () Zeichen enthällt, setzt mein Programm sie als das ein was sie sind.

Gibt es eine Möglichkeit, die in einer Variable enthaltenen Sonderzeichen zu ignorieren, das z.b. folgende Beispiele funktionieren?


set Aktion=Sichern
set Quelle=C:\Program Files (x86)\MeinProgrammDasGesichertWerdenSoll
set Ziel=D:\Sicherung

i /i "%Aktion%"=="Sichern" (
echo ich sichere jetzt mal was ...
robocopy /e /r:0 /w:0 /xj "%Quelle%" "%Ziel%"

if exist "%Ziel%\Datei123.exe" (
echo Der Ordner "%Quelle%" wurde erfolgreich gesichert.
) else (
echo Der Ordner "%Quelle%" wurde nicht gesichert
)
)


Wegen den Klammern im Program Files (x86) Ordner werden die If-Schleifen unterbrochen.


Anderes Beispiel:


set Zeile=Pass&Wort
for /F "tokens=1 delims=;" %%B IN ("%Zeile%") DO Call set "Password=%%B"

schtasks /create /S %COMPUTERNAME% /RU "%User%" /RP "%Password%" %SpecialParameter% /TN "%TaskName%" /TR """"%Program%"""" /ST %TaskStartTime% /SC "%Frequency%" /D %Days%

Nach einigem Testen hab ich es soweit hinbekommen, dass zumindest das & Zeichen in einer Variable keine Probleme mehr macht, wenn man die Variable so setzt:

for /F "tokens=1 delims=;" %%B IN ("%Zeile%") DO Call set Password="%%B"

Allerdings hab ich dann auch die "" Zeichen direkt in der Variable und ich müsste das Programm dahingehend abändern, dass alle "" um die Variable herum später nicht mehr benutzt werden (bsp: /RP %Password% statt /RP "%Password%")


Ich hoffe ihr könnt mir da helfen


Und nachdem ich gerade versucht habe, diesen Text mit Zeilennummern ect zu formatieren, was ich aber trotz der guten Hilfe einfach nicht hinbekomme, würd ich gern wissen wie soetwas geht.


Edit:

Nachdem ich noch einmal etwas probiert habe, bin ich zu dem Schluss gekommen, das ich eine Variable die () enthällt überall in meinem Programm benutzen kann, solange diese in "" steht.

Das ist sonst kein Problem, allerdings an einer Stelle stört es mich sehr, da ich die Variable später in eine Textdatei schreibe, die im HTML Format als eMail Body dient.

Das Ganze sieht dann so aus:

Quelle: <a href="C:\Program Files (x86)\MeinprogrammDasGesichertWerdenSoll">"C:\Program Files (x86)\MeinprogrammDasGesichertWerdenSoll"</a>

Ergebnis ist dann später: Quelle: "C:\Program Files (x86)\MeinprogrammDasGesichertWerdenSoll"

An dieser Stelle stören mich die "" und ich weiss einfach nicht wie ich sie dort wegbekomme ...
Mitglied: fpschultze
19.07.2011 um 10:13 Uhr
Hallo,

auf die Beispiele kann ich mangels Zeit nicht konkret eingehen. Es gibt Möglichkeiten, die Dich etwas weiterbringen. Allerdings bist Du definitiv im Grenzbereich des Machbaren.

Daher nur ein paar Tipps:


1.) Entwertung von Sonderzeichen

Du kannst die Bedeutung bzw. Funktion von Sonderzeichen aufheben, indem Du vor das zu entwertende Sonderzeichen das Zirkumflex-Zeichen setzt - also das hier: ^

Beispiel: Aufhebung der Umlenkungssymbole < und >

echo ^<a href=....^>....^</a^>

Das Zirkumflex-Zeichen kann auch entwertet werden, indem man es verdoppelt z.B. echo ^^_^^


2.) Zeichenersetzung bei Auflösung von Variablenwerten

Du kannst bei der Auflösung von Variablenwerten festlegen, ob ein (oder mehrere) Zeichen durch ein (oder mehrere oder kein) Zeichen ersetzt werden soll.

Syntax:

%variablenname:originalzeichen=ersatzzeichen%

Beispiel:

set blank=^&nbsp;
echo %blank:&=^&%


3.) Klammern loswerden

for %i in ("C:\Program Files (x86)") do echo Text ohne Klammern: %~i
Bitte warten ..
Mitglied: Skyemugen
19.07.2011 um 11:00 Uhr
Aloha,

nun, du hast dein Problem ja mehr oder minder schon selbst gelöst, denn die Hauptursache waren in beiden Fällen nun einmal die fehlenden Zollzeichen, wie ich dir auch noch einmal an meinem cmd prompt beweisen möchte.
E:\Skripte>set "Quelle=C:\Program Files (x86)" 
 
E:\Skripte>set "Var1=Es & War (Einmal)" 
 
E:\Skripte>echo "Es & War (Einmal)" 
"Es & War (Einmal)" 
 
E:\Skripte>if "ABC" == "ABC" ( 
dir /b /ad "C:\Program Files (x86)" 1>nul 
 if exist "C:\Program Files (x86)\Adobe" (echo Ja, existiert )  else (echo Nein, 
 nicht da ) 
Ja, existiert 
 
E:\Skripte>pause
Wenn du überflüssige " " in "%%B" weghaben willst, musst du fpschultzes Hinweis #3 nehmen, denn "%%~B" entfernt keine Klammern, sondern überflüssige Zollzeichen.

So und weil ich Postings ohne code-Tags gar nicht mag, ist mir dein Beitrag inzwischen zu wirr, wenn mittendrin irgendwas steht und dann wieder was neues und dann noch anders ...

In Sachen Zeilennummern sage ich nur
C:\Users\Melphiz>@for /f "delims=: tokens=1,2" %s in ('findstr /n "^" "E:\Skript 
e\namen.txt"') do @echo %s %t 
1 1 2 
2 ersetzen 
3 originak 
4 suchen 
5 zähler
Als Beispiel, wenn es derartiges ist, was du suchst.

Das mit dem Endergebnis Pfad ohne Zollzeichen verstehe ich nicht ganz, was nutzt der Pfad ohne Zollzeichen? Wo geschieht die Ausgabe, im HTML?

greetz André
Bitte warten ..
Mitglied: ForgottenRealm
19.07.2011 um 11:49 Uhr
Danke für die schnellen Antworten!

#1

Das mit dem Escapen kenne ich inzwischen, nutze es und es funktioniert auch

#2

Ist mir auch bekannt, behebt aber leider mein Problem nicht (hat sich aber erledigt, siehe "")

#3

Hat sich ebenfalls erledigt

André:

Meine Programmierung sieht so aus:


...
(
echo Quelle: ^<a href="%Source%\%File%"^> "%Source%\%File%" ^</a^>
)

Dort habe ich jetzt die "" eingefügt

Rauskommen tut später das:

Quelle: "C:\Program Files (x86)\CSR EVA"

Wenn ich an dieser Stelle die "" weglasse, verwendet Batch die () im Ordnernamen.



Was die Formatierung angeht, ich hab z.b. hier hier nachgeschaut aber finde nirgends eine Anleitung, wie ich die formatierten Felder mit ...

01. [weisser hintergrund + text]
02. [blauer hintergrund + text]
03. [weisser hintergrund + text]
04. [blauer hintergrund + text]
...

... erstellen kann.
Bitte warten ..
Mitglied: Friemler
19.07.2011 um 12:02 Uhr
Hallo ForgottenRealm,

zum Ausgeben von Variablen mit Sonderzeichen gibt es auch noch das hier:
01.
if 1 equ 1 ( 
02.
  <NUL set /p "=Hier mal ein paar Sonderzeichen: &<>|%()" 
03.
  echo. 
04.
)
Die Anführungszeichen werden dabei nicht ausgegeben. SET /P dient ja eigentlich zum Einlesen von Benutzereingaben. Wenn man den Variablenbezeichner vor dem Gleichheitszeichen weglässt, wird nur der Text ausgegeben. Das <NUL simuliert den Druck auf ENTER. Da nach dem Text kein Zeilenumbruch erzeugt wird, muss man den noch mit ECHO. manuell erzeugen.

Um die Anführungszeichen in der Variablen Password bei
for /F "tokens=1 delims=;" %%B IN ("%Zeile%") DO Call set Password="%%B"
wegzubekommen, musst Du
for /F "tokens=1 delims=;" %%B IN ("%Zeile%") DO set "Password=%%B"
schreiben. Auf jeden Fall immer zu empfehlen ist es, die komplette Zuweisung von SET-Befehlen eben wegen diesen vermaledeiten Sonderzeichen in Anführungszeichen zu setzen.

Den CALL-Befehl vor einem SET brauchst Du übrigens nur in bestimmten Sonderfällen, z.B. hier:
01.
set "test=Hallo Welt" 
02.
set "word=Welt" 
03.
set "word2=Du da" 
04.
echo %test% 
05.
call set "test=%%test:%word%=%word2%%%" 
06.
echo %test%
Gruß
Friemler
Bitte warten ..
Mitglied: Skyemugen
19.07.2011 um 12:10 Uhr
Aloha,

wenn du einen Beitrag/Kommentar erstellst, leuchtet ganz toll rot das Wort Formatierungshilfe und dort findest du dann auch die Codeformatierung aber das nur nebenbei.

So, wenn ich es also recht betrachte, stören dich die Zollzeichen also nur der Optik wegen ... (wer gibt auch schon den Pfad als Anzeigenamen an *gg*)

greetz André
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Sonderzeichen in eine Batch automatisch einfügen

gelöst Frage von Dr.ByteBatch & Shell18 Kommentare

Hallo Admins, ich habe folgende Daten in über 500 Txt-Dateien stehen es sind aber auch andere links in der ...

Visual Studio

HTML interpretieren und zerlegen mit CSharp

gelöst Frage von it4baerVisual Studio1 Kommentar

Hallo, ich versuche aus einem großen HTML-"String" verschiedene Daten auszulesen und diese zu verarbeiten. Mit jquery geht das eigentlich ...

Outlook & Mail

Outlook Logging ETL Datei interpretieren

Frage von winIT3264Outlook & Mail3 Kommentare

Hallo, ich habe Outlook Logging aktiviert und Outlook erzeugt drei ETL Dateien. Ich habe sie in den WIndows Performance ...

Batch & Shell

Batch für Textdatei - Sonderzeichen an bestimmter Stelle in fortlaufender Ausgabe

gelöst Frage von Steven123Batch & Shell4 Kommentare

Hallo Zusammen, ich habe ein Problem, bei dem ich nicht weiterkomme und Euere Hilfe benötige. Ich habe eine Textdatei, ...

Neue Wissensbeiträge
E-Mail
Email-Apps und Verhalten bei Pop3
Erfahrungsbericht von kfranzk vor 1 TagE-Mail6 Kommentare

Hallo Freunde, da mir mein diesbezüglicher Faden als gelöst markiert wurde, muss ich hier neu aufsetzen. Ich arbeite bewusst ...

Hyper-V

Optimiertes Ubuntu per Microsoft Hyper-V-Schnellerstellung verfügbar

Anleitung von Frank vor 1 TagHyper-V

Für Microsofts Virtualisierungssoftware Hyper-V ist ab sofort auch ein optimiertes Ubuntu 18.04.1 LTS verfügbar. In der "Hyper-V-Schnellerstellung" App, die ...

Sicherheits-Tools

Trend Micro WorryFree Business Security (WFBS) 10 - neuer Patch 1470 verfügbar

Tipp von VGem-e vor 1 TagSicherheits-Tools1 Kommentar

Servus, mal sehen, ob mit Patch 1470, zu finden unter dann die angeblich fehlerhafte Funktion, die unter W10 im ...

Server-Hardware

Lösung für Ersatz eines defekter Raid-Controllers

Anleitung von wellknown vor 2 TagenServer-Hardware4 Kommentare

Hallo, da ich nichts gefunden habe und selbst eine Lösung brauchte, hier eine kleine Anleitung für alle die vor ...

Heiß diskutierte Inhalte
Windows Server
Mit der alten Domäneprofil anmelden ohne Server
gelöst Frage von SyosseWindows Server37 Kommentare

Hallo Jungs Folgendes Szenario: Ich habe bei einem sehr kleinen Unternehmen (2Personen) den Server migriert, soweit hat alles geklappt. ...

Sicherheits-Tools
Virenprogramm lässt Programme nicht starten
Frage von SurferGirlSicherheits-Tools23 Kommentare

Hallo, ich bin neu hier, ich hoffe ich habe die richtige Rubrik gewählt. Falls nicht, tut es mir leid. ...

Windows Server
SQL Server Instanz (Eplan) auf WIN 2008 RC2 Server frisst RAM ohne Limit
Frage von derinderinderinWindows Server17 Kommentare

Hallo Zusammen, Wir haben hier einen Windows 2008 RC2 Server. Darauf läuft ein SQL Server Express 2014 Version 12.0.4232.0. ...

Windows 10
Best Practice für Schulungsräume
Frage von Sn0wFoxWindows 1016 Kommentare

Hallo, leider bin ich auch nach langer Suche nicht auf eine zufriedenstellende Nicht-Cloud-Lösung gestoßen und wollte mal Fragen ob ...