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, 6195 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
Batch & Shell
Powershell Übergabeparameter (1)

Frage von Bommi1961 zum Thema Batch & Shell ...

Entwicklung
C sharp Übergabeparameter aus Liste wählbar machen (2)

Frage von MartinAD zum Thema Entwicklung ...

Assembler
gelöst EBP im Stack speichern- wofür? (1)

Frage von StefaOn zum Thema Assembler ...

Batch & Shell
Problem mit Funktion und Combobox (7)

Frage von Druide83 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Linux Netzwerk

Ping und das einstellbare Bytepattern

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(3)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
SAN, NAS, DAS
MSA 2050 RAID Konfig (21)

Frage von Leo-le zum Thema SAN, NAS, DAS ...

Netzwerkmanagement
Windows Server 2008 R2: "netsh reset" nicht verfügbar? (10)

Frage von RickTucker zum Thema Netzwerkmanagement ...

Netzwerkmanagement
Suche eine Software für Cloudverwaltung (6)

Frage von tsunami zum Thema Netzwerkmanagement ...

Google Android
Musik Wiedergabe am PC mit Smartphone über Bluetooth steuern (5)

Frage von justlukas zum Thema Google Android ...