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, 7360 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
Batch & Shell

Übergabe der Variablen bei Call funktioniert nicht

gelöst Frage von SupidoBatch & Shell2 Kommentare

Hallo, ich komme mit menem untenstehnden Code nicht weiter. In :install bekomme ich nicht die richtigen Variablen ("%Pathdriver%" "%Printername%") ...

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 ...

Windows 7

GDT, Übergabe an Medizinische Software

Frage von HubtusWindows 717 Kommentare

Hallo zusammen, wieder mal eine, wie ich finde, sehr spezielle Frage. Ich hoffe irgendjemand hat eine Idee Folgendes Szenario: ...

Router & Routing

WLAN-Call im Gästewlan der Fritzbox

gelöst Frage von bandiandiRouter & Routing12 Kommentare

Hallo zusammen, vielleicht nur ein kleiner Kniff, ich nutze zuhause eine Fritzbox 7590, fahre einen Accesspoint über den Fritz ...

Neue Wissensbeiträge
Backup

2016 - Restore mit WBAdmin - iSCSI Device als Sicherungsziel

Erfahrungsbericht von Henere vor 4 StundenBackup

Servus zusammen, was mich eben einige graue Haare gekostet hat Server 2016. Ich habe meinem Server eine weitere M2 ...

Humor (lol)
(Part num your Hacked phone. +XX XXXXXX5200)
Erfahrungsbericht von Henere vor 2 TagenHumor (lol)5 Kommentare

Mein Handy hat aber ne ganz andere Endnummer. Muss ich mir jetzt Sorgen machen ? :-) Vielleicht betrifft es ...

Exchange Server

Letztes Update für Exchange 2016 CU9 war in gewisser Weise destruktiv

Erfahrungsbericht von DerWoWusste vor 2 TagenExchange Server7 Kommentare

Kurzer Erfahrungsbericht zu Exchange2016-KB4340731-x64 Der Exchangeserver hat wie gewöhnlich versucht, es in der Nacht automatisch zu installieren - abgesehen ...

Erkennung und -Abwehr

Neue Sicherheitslücke Foreshadow (L1TF) gefährdet fast alle Intel-Prozessoren

Information von Frank vor 3 TagenErkennung und -Abwehr3 Kommentare

Eine neue Sicherheitslücke, genannt Foreshadow (alias L1TF) wurde auf der Usenix Security 18 von einem Team internationaler Experten veröffentlicht. ...

Heiß diskutierte Inhalte
Netzwerke
Netzwerk-Architektur mit VLANs
Frage von niLuxxNetzwerke43 Kommentare

Liebe Community, Ich hätte eine kurze Frage an euch. Ich werde in Kürze das Netzwerk unserer (sehr) kleinen Firma ...

Netzwerke
SSH - Wieso werde ich nach VPN Verbindung rausgeschmissen?
Frage von VernoxVernaxNetzwerke10 Kommentare

Hallo, ich habe es endlich geschafft mein Handy mit einer VPN Verbindung an meinen Router anzuschließen. Nach der Login ...

Microsoft
Ist es möglich ein reines Volume C Datenbackup in eine Hyper-V VM zu konvertieren?
Frage von Frank84Microsoft10 Kommentare

Hallo zusammen, ich habe hier ein Backup vorliegen, das ausschließlich das komplette C:\ Volume eines physischen Server 2012 enthält. ...

Windows Server
Freigaben per Default nur für Domänen-Benutzer
Frage von tierwoWindows Server8 Kommentare

Hallo gibt es eine Möglichkeit, einen Server 2016 so zu konfigurieren (z.B. per GPO), dass Freigaben die erstellt werden ...