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

Verzeichnisnamen mit Ausrufezeichen als Variable deklarieren

Frage Entwicklung Batch & Shell

Mitglied: Juergenl

Juergenl (Level 1) - Jetzt verbinden

10.05.2007, aktualisiert 18:38 Uhr, 9213 Aufrufe, 4 Kommentare

Ausrufezeichen "maskieren"

Hallo in die Runde!

Bitte um Nachsicht, wenn ich für einen Ladenhüter um Hilfe bitte: Ich mühe mich zur Zeit vergeblich ab, unter WIN XP Pro den Verzeichnisnamen "C:\Programme\Fritz!Box Monitor" als CMD-Variable zu deklarieren: Vor allem das Ausrufezeichen erscheint dabei nicht. (Könnte ein Ratgeber bitte gleich auch nochmal einen Satz in Bezug auf das Leerzeichen spendieren ?)

Ich betreibe ferner einen Editor, welcher Backup-Dateien mit der Endung "BK!" erzeugt. Auch diese Files würde ich gerne in Variablenform beschreiben, um sie gemeinsam mit anderen Backup- und Temp-Files per Batch zu entsorgen.

Wo kann ich solche und andere GRUNDREGELN wohl nachlesen ? ( ... was gehört z.B. in Klammern, in Anführungszeichen, in Hochkommata pp)

Danke im Voraus für jede Hilfe und

Grüße aus Essen

Jürgen
Mitglied: miniversum
10.05.2007 um 08:08 Uhr
Den Verzeichnisnamen kannst du ganz einfach wie alles andere auch in einer Variabeln hinterlegen.
Hier ein Beispiel:
@echo off
set variablenname="C:\Programme\Fritz!Box Monitor"
echo [%variablenname%]
set "variablenname=C:\Programme\Fritz!Box Monitor"
echo [%variablenname%]

Die " sollte man immer benutzen wenn Leerzeichen in Datei- oder Verzeichnisnamen vorkommen. Es schadet aber nicht sie Grundsätzlich bei Datei- und Verzeichnisnamen zu benutzen.
Als Beispiel:
echo Dies ist irgent ein Text>"eine beliebeige Datei.txt"

Nachlesen kan man das alles in der Verschiedenen Postings hier bei Batch und Shell und in den Tutorials und Links unten.

miniversum
Bitte warten ..
Mitglied: Juergenl
10.05.2007 um 09:14 Uhr
Hallo miniversum,

danke für Deine schnelle Antwort:

Den Verzeichnisnamen kannst du ganz einfach
wie alles andere auch in einer Variabeln
hinterlegen.
Hier ein Beispiel:
> @echo off
> set
variablenname="C:\Programme\Fritz!Box Monitor"
> echo [%variablenname%]
> set
"variablenname=C:\Programme\Fritz!Box Monitor"
> echo [%variablenname%]

Die " sollte man immer benutzen ....

Ich habe das eben auf die Schnelle in Form des Batch-Schnipsels in beiden Varianten (%variabl0% und %variabl1%)versucht , leider aber nicht mit dem gewünschten Erfolg:

@ECHO OFF & SetLocal EnableDelayedExpansion & CLS
:: ----------------------------------------------------------
set variabl0="C:\Programme\Fritz!Box Monitor"
echo [%variabl0%] >> xtest.txt
set "variabl1=C:\Programme\Fritz!Box Monitor"
echo [%variabl1%] >> xtest.txt
goto :eof

:: Ausgabe:

["C:\Programme\FritzBox Monitor"]
[C:\Programme\FritzBox Monitor]
::


Für beide Varianten zeigt 'echo' den Inhalt leider OHNE das Ausrufezeichen, während das Blank richtig erfaßßt wird ... - sorry mache ich da etwas verkehrt ?

Nachlesen kan man das alles in der Verschiedenen Postings hier bei Batch und
Shell ....

Den einschlägigen Stoff hier im Forum habe ich natürlich schon rauf und runter durchgenommen. In diesem Fall aber leider ohne den rechten Erfolg. Also auf ein Neues!

Beste Grüße

Jürgen


PS: Ich melde mich noch einmal, nachdem ich zur Sicherheit mal das 'EnableDelayedExpansion' auskommentiert habe, und siehe da:


@ECHO OFF
:: & SetLocal EnableDelayedExpansion & CLS
:: ----------------------------------------------------------
type xtest.bat > xtest.txt
echo. >> xtest.txt
echo
>> xtest.txt
set variabl0="C:\Programme\Fritz!Box Monitor"
echo [%variabl0%] >> xtest.txt
set "variabl1=C:\Programme\Fritz!Box Monitor"
echo [%variabl1%] >> xtest.txt
echo
>> xtest.txt
echo. >> xtest.txt

:: ===Ausgabe:

["C:\Programme\Fritz!Box Monitor"]
[C:\Programme\Fritz!Box Monitor]
::


In diesem Fall kommt also das heraus, was ich wollte. Danke noch einmal!

Welchen Zusammenhang dies allerdings mit 'DelayedExpansion' haben mag ... darüber grübelt jetzt heftig

mit freundlichen Grüße

Jürgen
Bitte warten ..
Mitglied: Biber
10.05.2007 um 12:52 Uhr
Moin Juergenl,

die CMD.exe hat an dieser Stelle (Verwendung von Ausrufungszeichen bei DelayedExpansion) in der Tat ein Problem.
Einen nicht dokumentierten Bug, wäre richtiger.
Andere würden jetzt auch schreiben: Ist halt Shice programmiert und zu wenig getestet worden. Verkneif ich mir aber.

Wenn ein "Setlocal EnableDelayedExpansion" aktiv ist, dann ist es unmöglich,
  • innerhalb von Variablennamen Ausrufungszeichen zu verwenden
  • auch nur ein banales "echo Hallo Welt!" auszuführen ("Hallo Welt" ist das Ergebnis)

Das Ausrufungszeichen lässt sich auch nicht als Literal/als Sonderzeichen maskieren.
Zumindest kenne ich weder einen Workaround noch eine offizielle M$-Einstufung als Bug.

Also die Delayed Expansion nicht pauschal aktivieren.

Gruss
Biber
Bitte warten ..
Mitglied: Juergenl
10.05.2007 um 18:38 Uhr
Hej Biber,

Dank für diesen Hinweis !

die CMD.exe hat an dieser Stelle (Verwendung
von Ausrufungszeichen bei DelayedExpansion)
in der Tat ein Problem.
Einen nicht dokumentierten Bug, wäre
richtiger.

"THAT's NOT A BUG, IT's A (NEW) FEATURE!"

Wenn ein "Setlocal
EnableDelayedExpansion" aktiv ist, dann
ist es unmöglich,
  • innerhalb von Variablennamen
Ausrufungszeichen zu verwenden

Das Ausrufungszeichen lässt sich auch
nicht als Literal/als Sonderzeichen
maskieren.

... aber wie sollte DA jemals ein Mensch drauf kommen ? Die Erfinderin hat für solche Eigenheiten natürlich 'Gute Gründe', - streng geheim natürlich!

Also die Delayed Expansion nicht pauschal
aktivieren.

Auch aus dieser Sicht bestimmt ratsam!

Nochmals besten Dank beiderseits und Grüße aus Essen

Jürgen
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Batch & Shell
gelöst Selected Gridview Value in Variable schreiben (4)

Frage von reissaus73 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (29)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...