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, 1780 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...

VB for Applications
Druckvorschau verliert nach dem Drucken Fokus

Frage von greatmgm zum Thema VB for Applications ...

Microsoft
HDMI Ausgang verliert Sound Signal

Link von runasservice zum Thema Microsoft ...

Batch & Shell
Schleife mit todos CMD

Frage von TommyDerWalker zum Thema Batch & Shell ...

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

Frage von Xaero1982 zum Thema Microsoft ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...