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

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Powershell Übergabeparameter (1)

Frage von Bommi1961 zum Thema Batch & Shell ...

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

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

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