Top-Themen

Aktuelle Themen (A bis Z)

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 Übergabe von Variabeln die Prozentzeichen enthalten per call

Mitglied: miniversum

miniversum (Level 3) - Jetzt verbinden

04.05.2008, aktualisiert 16:53 Uhr, 7417 Aufrufe, 2 Kommentare

Hallo
Ich habe eine Batch inder ich unter anderm in einer For-Schleife Dateinamen aus einer Datei auslese die dann, nach weiteren Aktionen vorher, kopiert werden sollen.

Daher übergebe ich diese Dateinamen jeweils per Call einer Unterfunktion inder das alles gemacht wird und am ende eben auch die Kopieraktion.

Leider können in den Dateinamen alle möglichen Zeichen vorkommen, also auch ! (weshalb ich nicht mit delayedexpansion arbeiten kann) und eben auch %. Und genau dort liegt das Problem.
Übergebe ich per call die einzelnen Dateinamen werden bei denen die ein % enthalten die Prozentzeichen einfach entfernt. Dadurch geht am Ende die Kopieraktion schief weil die Datei (die ja nun ohne % zum Kopieren genommen werden soll, nicht gefunden werden kann.

Hier mal zur besseren Anschauung ein kleines Beispiel was ich meine.
@echo off
FOR /F "delims=" %%i in (Datei.txt) do (
echo Vorher: %%i
call:machwas "%%i"
)
goto:eof

:machwas
echo Nachher: %~1
goto:eof

In Datei.txt stehen die Datienamen einfach untereinander:
C:\Verzeichnis\erste Datei.txt
d:\anderes Verzeichnis\andere% Datei.txt
c:\noch ein Verzeichnis\und noch ne Datei.txt

Würde ich die Beschriebene Batchdatei ausführen würde allerdings sowas bei rauskommen:
Vorher: C:\Verzeichnis\erste Datei.txt
Nachher: C:\Verzeichnis\erste Datei.txt
Vorher: d:\anderes Verzeichnis\andere% Datei.txt
Nachher: d:\anderes Verzeichnis\andere Datei.txt
Vorher: c:\noch ein Verzeichnis\und noch ne Datei.txt
Nachher: c:\noch ein Verzeichnis\und noch ne Datei.txt
Wie man sehen kann wird die zweite Datei "andere% Datei.txt" nicht richtig übergeben.
Was kann ich da tun?
Ich hab schon versucht per set befehl das % durch ein ^% zu ersetzen aber das haut nicht wirklich hin wieichs versucht habe.
Auch eine Übergabe als
call:machwas "%%~si"
also in 8.3 Form nützt mir nichts, weil ich den ganzen Namen vorher in dieser "Machwas" benötige.

Ich bin für alle hilfreichen Tips dankbar.
Mitglied: bastla
04.05.2008 um 13:17 Uhr
Hallo miniversum!

Ich hab schon versucht per set befehl das % durch ein ^% zu ersetzen
Ersetze % durch %% ...

[Edit] ... bzw noch einfacher:
01.
@echo off
02.
FOR /F "delims=" %%i in (Datei.txt) do (
03.
    set "Dat=%%i"
04.
    echo Vorher  : %%i
05.
    call:machwas "%%i"
06.
)
07.
goto:eof
08.
 
09.
:machwas
10.
echo Nachher : %~1
11.
echo Variable: %Dat%
12.
echo\
13.
goto:eof
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: miniversum
04.05.2008 um 16:53 Uhr
Habs jetzt wie in dem Edit gemacht.

War irgentwie auf die Übergabe versteift... Jetzt gehts wie gewollt.
Danke
Bitte warten ..
Ähnliche Inhalte
Humor (lol)
Call Center
Frage von ukulele-7Humor (lol)10 Kommentare

Ich hatte eben einen eigentlich lustigen Anruf, wenn es mir dieses dummdreiste Getue nicht so auf den Nerv gehen ...

Batch & Shell
Call befehl als Admin!
Frage von FrankreichBatch & Shell4 Kommentare

Hallo liebes Forum! Ich rufe in meinem Batchprogramm ein anderes Batchprogramm mit dem befehl "call" auf. Das Programm das ...

Voice over IP
Cisco CucyLync - Click to Call
gelöst Frage von JK23JKVoice over IP2 Kommentare

Hallo zusammen, ich habe da mal eine Frage. Wie es der Titel schon sagt haben wir eine CISCO Telefonanlage ...

VB for Applications
Call befehl öffnet Makro auswahl
Frage von thomas1972VB for Applications3 Kommentare

Hallo, ich habe ein Modul, welches den Num-Look an/ausschalten kann. Rufe ich per CALL Befehl den aus/an Befehl auf ...

Neue Wissensbeiträge
Humor (lol)
Administrator.de Perlen
Tipp von DerWindowsFreak2 vor 2 TagenHumor (lol)3 Kommentare

Hallo, Heute beim stöbern auf dieser Seite bin auf folgenden Thread aus dem Jahre 2006 gestossen: Was meint ihr? ...

Erkennung und -Abwehr
OpenSSH-Backdoor Malware erkennen
Tipp von Frank vor 3 TagenErkennung und -Abwehr

Sicherheitsforscher von Eset haben 21 Malware-Familien untersucht. Die Malware soll Hintertüren via OpenSSH bereitstellen, so dass Angreifer Fernzugriff auf ...

iOS
WatchChat für Whatsapp
Tipp von Criemo vor 6 TageniOS5 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor!
Tipp von Criemo vor 7 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
PCIe 1.0 Grafikkarte für 3840x2160
Frage von Windows10GegnerGrafikkarten & Monitore30 Kommentare

Hallo, mein Vater hat einen neuen Monitor gekauft, welcher eine native Auflösung von 3840*2160 hat. Diese muss jetzt auch ...

Windows Server
Dienstnamen und oder Deutsche und Englische Beschreibung in services.msc gleichzeitig anzeigen
gelöst Frage von vafk18Windows Server23 Kommentare

Guten Morgen, die Suche nach Diensten in services.msc gestaltet sich immer wieder schwierig, weil mir je nach Aufgabe die ...

Windows 10
Windows Enterprise 1809 Eval nicht bootbar
Frage von Sunny89Windows 1022 Kommentare

Hallo zusammen, bevor ich mich jetzt noch stundenlang rumärger wollte ich euch fragen, ob Ihr die gleichen Probleme habt ...

JavaScript
Javascript: WebSql
gelöst Frage von internet2107JavaScript13 Kommentare

Guten Morgen zusammen, zunächst einmal einen schönen dritten Advent. Ich habe ein Problem mit Javascript und WebSQL. Bisher habe ...