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

FOR Schleife mit DIR verliert Ausrufezeichen

Frage Entwicklung Batch & Shell

Mitglied: RaidMan

RaidMan (Level 1) - Jetzt verbinden

03.03.2014, aktualisiert 14:48 Uhr, 1818 Aufrufe, 7 Kommentare

Hallo Kenner und Könner,

leider hadere ich immer noch mit den Sonderzeichen in meiner BATCH
Jetzt ist es das " ! " das mir Kopfschmerzem macht, denn es verswindet einfach aus dem String

01.
dir /b "!quella!" 
02.
pause 
03.
FOR /f "delims=" %%a IN ('dir /b "!quella!"') DO ( 
04.
echo 101 %%a 
05.
pause 
06.
set "quelle=%~1%~2\%%a" 
07.
)
die For Schleife gibt ein mit DIR ermittelten Dateinamen, der ein ! enthält schlich ohne aus
Also dir zeigt noch "na! sowas.txt"
echo 101 zeigt nur "na sowas.txt"

ein & an der Stelle wir durchgereicht

wie kann ich ereichen, das auch das ! durchgereicht wird?
Mitglied: colinardo
03.03.2014 um 15:02 Uhr
dann musst du innerhalb deiner Schleife vor dem
echo ein
setlocal disabledelayedexpansion
setzen.
Exkurs zur verzögerten Variablenerweiterung:
http://www.administrator.de/wissen/tutorial-zur-for-schleife-155681.htm ...

Grüße Uwe
Bitte warten ..
Mitglied: RaidMan
03.03.2014, aktualisiert um 17:11 Uhr
Hallo Uwe,

Danke für die Antwort, ich bin wohl zu blond für das Thema

scheinbar ist nur das eine " & " oder das andere " ! " Zeichen zulässig?

So wie ich deinen Vorschlag verstehe ist nur die eine oder andere Variante möglich.

Oder kann man den Code so gestalten, das ! und ? in einem String vorkommen dürfen
bzw eines von beiden Zeichen aber mit den selben Code abzuarbeiten sind ohne das es Probleme im Batch ablauf gibt??
Bitte warten ..
Mitglied: Biber
03.03.2014 um 17:26 Uhr
Moin RaidMan,

ich habe da keine Schwierigkeiten bei enabled delayed expansion (Testfall 1 unten).

C:\Users\Biber>md "Na! hallo & bye" 
 
 
C:\Users\Biber>for /f "delims=" %i in ('dir /b na*') do @echo Inhalt von i:[%i] 
Inhalt von i:[Na! hallo & bye] 
 
C:\Users\Biber>setlocal enabledelayedexpansion & for /f "delims=" %i in ('dir /b na*') do @(set "yy=%i" & echo Inhalt von yy:[ !yy!]) 
Inhalt von yy:[ Na! hallo & bye] 
 
## Problem OHNE delayedExpansion Ich muss die Variabl %xx% in Anführungszeichen setzen: 
 
C:\Users\Biber>set xx 
xx=Na! hallo & bye 
 
...  echo Inhalt von xx:"%xx%" 
Inhalt von xx:"Na! hallo & bye"  
 
##Ohne Anführungszeichen stolpert der Interpreter über das "&"-Zeichen. 
Grüße
Biber
Bitte warten ..
Mitglied: pieh-ejdsch
03.03.2014, aktualisiert um 18:15 Uhr
moin RaidMan,

man(n) könnte fast meinen das Problem ist bekannt
Ich verweise mal auf die Beschreibung #94915 Batch - setlocal EnableDelayedExpansion - ersetzen von Text, der ein Ausrufezeichen enthält

Gruß Phil
Bitte warten ..
Mitglied: bastla
03.03.2014, aktualisiert um 18:55 Uhr
Hallo Biber!

Könntest Du aber natürlich so versuchen:
01.
@echo off & setlocal 
02.
md "Na! hallo & bye" 
03.
 
04.
for /f "delims=" %%i in ('dir /b na*') do ( 
05.
    set "yy=%%i" 
06.
    setlocal enabledelayedexpansion 
07.
    echo Inhalt von yy:[!yy!] 
08.
    endlocal 
09.
)
Der Nebeneffekt, dass ohne Klimmzüge der Inhalt von !yy! nach dem endlocal nicht mehr zur Verfügung steht, ist natürlich klar ...
@ RaidMan
Möchtest Du nicht vielleicht einmal darstellen, was Du eigentlich insgesamt erreichen willst?

Grüße
bastla

[Edit] @ PH: Den Thread hätte ich wohl nicht mehr gefunden ... [/Edit]
Bitte warten ..
Mitglied: RaidMan
04.03.2014, aktualisiert um 13:15 Uhr
Hallo und guten Tag zusammen,

erst einmal vielen Dank für eure Hilfe mein Problem zu lösen
Da ich mich selbst unter Erfolgsdruck gesetzt habe bin ich gerade nicht in der Lage das Thema so richtig theoretisch zu erfassen aber es brennt mir unter den Nägeln einen fehlerfreien Ablauf zu erzielen.

@bastla also die/der batch soll den Inhalt eines Verzeichnisses etwas reorganisieren/Inhalte verschieben ggf Umbennen und eine txt Datei erzeugen die sortierte Infos zum Inhalt enthält. Der Name des Verzeichnis wird als Parameter übergebeben und kann alle Zeichen enthalten die Windows erlaubt.
Später will ich diese "Infodatei" dazu nutzen um sie mit einem Datenbankprogram einzulesen um den Inhalt aller (einige tausend) Verzeichnisse gescheit im Zugriff zu haben.
Bis auf das Problem mit den Steuerzeichen funktioniert es auch.
Besoners fies ist, das es nicht unbedigt eine Fehlermedung gibt wenn ein For, Findstr, Echo >>, ein Zeichen aus einem "String" als Steuerzeichen interpretiert und danach Käse entsteht.
Ich frage mich ob ich nich besser erst die übergebenen %1-%4 auf solche Problem Zeichen prüfe und ggf die Batch abbreche bevor Käse entsteht, allerdings habe ich da auch schone keine Idee wie ich das anstellen könnte, da Prüfen mit Findstr schon mit den Strings Probleme hat ?

Das Hauptproblem scheint ja zu sein das einig oder alle Befehle die übergebenen %Strings% nicht als einen "String" betrachten,
denn Batch eingangs scheint die Welt ja noch in Ordnung egal was %1 %2 %3 %4 enthalten es wird korekt dargestelt mit
echo %1
echo %1
echo "%~1"
echo "%~2"
usw
mein Problem beginnt erst mit dem verarbeiten der Strings
Bitte warten ..
Mitglied: bastla
04.03.2014, aktualisiert um 10:44 Uhr
Hallo RaidMan!

Batch ist natürlich nicht erste Wahl, wenn es um Stringmaniipulationen geht, aber die Sonderzeichenproblematik lässt sich durch konsequentes Verwenden von Anführungszeichen eigentlich ganz gut entschätfen - und wenn die in die Textdatei geschriebenen Informationen für den Import in eine Datenbank gedacht sind, sollte es ja auch kein Problem sein, auch dort Anführungzeichen beizubehalten ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Dateinamen auslesen und in einer Schleife benutzen (12)

Frage von TeholBeddict zum Thema Batch & Shell ...

LAN, WAN, Wireless
PC verliert Netzwerkanbindung (7)

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

Batch & Shell
Verschachtelte For Schleife für Batch Neuling (3)

Frage von yperiu zum Thema Batch & Shell ...

Neue Wissensbeiträge
Batch & Shell

Batch - ein paar Basics die man kennen sollte

Tipp von Pedant zum Thema Batch & Shell ...

Microsoft

Restrictor: Profi-Schutz für jedes Window

(6)

Tipp von AlFalcone zum Thema Microsoft ...

Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst Gruppenzugehörigkeit von AD Usern ermitteln - die Perfektion fehlt (11)

Frage von Stefan007 zum Thema Batch & Shell ...

LAN, WAN, Wireless
gelöst Netzwerk in 2 Teile trennen (11)

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

Windows Server
Benutzer lässt sich nur an einem Clientcomputer anmelden (11)

Frage von Ammann zum Thema Windows Server ...

Netzwerke
SFP Modul (miniGibic) (10)

Frage von apranet zum Thema Netzwerke ...