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

Prozentzeichen in Übergabeparameter

Frage Entwicklung Batch & Shell

Mitglied: Ren

Ren (Level 1) - Jetzt verbinden

21.11.2008, aktualisiert 11:47 Uhr, 6188 Aufrufe, 4 Kommentare

Hm, mein Problem ist schwierig zu beschreiben: ich will in einer Batch einen Liste mit Dateien und Verzeichnissen bearbeiten. In den Dateinamen können leider "!", "%", "&", und noch ein paar eklige Sonderzeichen auftauchen. Sagen wir mal, ich hätte folgende Dateien:
01.
"hallo.txt" 
02.
"test %20 blöd%.txt" 
03.
"test %genutztevariable%.txt"
Bis her habe ich dann soetwas:
01.
@echo off 
02.
set "genutztevariable=Kommt in Dateien nie vor: * ? \" 
03.
::hier stimmt die Ausgabe 
04.
for /f "delims=" %%i IN ('dir /b') DO echo "%%~i" 
05.
echo --- 
06.
::hier verschwinden meine %, oder werden durch deren Inhalte ersetzt 
07.
for /f "delims=" %%i IN ('dir /b') DO call :handlefile "%%~i" 
08.
goto :end 
09.
 
10.
:handlefile 
11.
echo "%~1" 
12.
::eigentliche Funktionen 
13.
goto :eof 
14.
:end
Die Ausgabe auf dem Bildschirm sieht so aus:
01.
"hallo.txt" 
02.
"test %20 blöd%.txt" 
03.
"test %genutztevariable%.txt" 
04.
--- 
05.
"hallo.txt" 
06.
"test 0 blöd.txt" 
07.
"test Kommt in Dateien nie vor: * ? \.txt"
Gibt es einen Möglichkeit, wie ich die Prozentzeichen und den Text zwischen ihnen als Übergabeparameter retten kann? setlocal enabledelayedexpansion geht glaube ich nicht, weil ich dann ja meine "!" verliere.
Mitglied: Netzheimer
21.11.2008 um 07:43 Uhr
Moin

%20 ist ein hex-ASCII-Leerzeichen. Die Ausgabe wäre ja dann richtig, oder?
Bitte warten ..
Mitglied: Ren
21.11.2008 um 10:16 Uhr
Es mag ja sein, das %20 ein hex-ASCII-Leerzeichen ist, aber es kann auch einfach als String in einem Dateinamen vorkommen, und in meiner Batch muss ich das dann als solchen String als Übergabeparameter übergeben. Ich habe den Text oben auch noch mal korrigiert und angepasst um zu zeigen, dass es nicht nur %20 ist, was schief läuft, sondern eigentlich jedes %xx%, weil es scheinbar einfach als Variable angesehen wird. Meistens ist eine solche Variable dann leer, es kann natürlich auch mal sein, dass sie nicht leer ist.
Bitte warten ..
Mitglied: Biber
21.11.2008 um 10:33 Uhr
Moin Ren,

versuche es in diesem Spezialfall (wenn Du weißt, dass die Dateinamen so aussehen könnten) so.
01.
:: --------RenBsp.bat 
02.
@echo off & setlocal 
03.
::hier stimmt die Ausgabe 
04.
for /f "delims=" %%i IN ('dir /b') DO echo %%i 
05.
echo --- 
06.
::hier verschwinden meine % jetzt nicht mehr 
07.
for /f "delims=" %%i IN ('dir /b') DO set "thisfile="%%~i"" & call :handlefile 
08.
goto :end 
09.
 
10.
:handlefile 
11.
Echo thisfile: %thisfile% 
12.
::eigentliche Funktionen ---- nimm %thisfile% statt %1 
13.
goto :eof 
14.
:end
Ausgabe:
01.
>renbsp 
02.
renBsp.bat 
03.
test %20 blöd%.txt 
04.
test.txt 
05.
hallo.txt 
06.
--- 
07.
thisfile: "renBsp.bat" 
08.
thisfile: "test %20 blöd%.txt" 
09.
thisfile: "test.txt" 
10.
thisfile: "hallo.txt"
Grüße
Biber
Bitte warten ..
Mitglied: Ren
21.11.2008 um 11:47 Uhr
Super! Früher, als ich noch nicht wusste, dass man bei call innerhalb einer Batch Übergabeparameter mitgeben kann, da hätte ich es auch so gemacht. Es Funktioniert! Vielen Herzlichen Dank! Ist zwar noch etwas früh, aber ein schönes Wochenende wünsche ich!
Bitte warten ..
Ähnliche Inhalte
Entwicklung
C sharp Übergabeparameter aus Liste wählbar machen (2)

Frage von MartinAD zum Thema Entwicklung ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Festplatten, SSD, Raid
PC stellt nach dem Bios ab (20)

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

Server-Hardware
Einem Stromausfall entgegen wirken (19)

Frage von OIOOIOOIOIIOOOIIOIIOIOOO zum Thema Server-Hardware ...

iOS
16 iPads zentrall verwalten (18)

Frage von simonlohr zum Thema iOS ...

Windows 7
Freeware MSI Tool (13)

Frage von uridium69 zum Thema Windows 7 ...