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

Zwei Prozentzeichen vor einer Variable in neue .bat Datei schreiben?

Frage Entwicklung Batch & Shell

Mitglied: Highend01

Highend01 (Level 1) - Jetzt verbinden

24.02.2011, aktualisiert 14:41 Uhr, 7799 Aufrufe, 9 Kommentare

Hallo,

ich arbeite hier an einer Batchdatei, die ihre Inhalte in eine neue .bat Datei überträgt (die resultierende .bat Datei wird später auf verschiedenen Rechnern gestartet und muss dafür individualisiert werden).

Der Ausschnitt, um den es geht:

01.
ECHO FOR /F "delims=~" %%A IN ('ECHO %%username%%^> "%%temp%%\~%%username%%" ^& DIR /L /B "%%temp%%\~%%username%%"') DO (>> "%WorkingDir%\%username%.bat" 
02.
ECHO 	SET username=%%A>> "%WorkingDir%\%username%.bat" 
03.
ECHO 	DEL /Q ~%%username%%>> "%WorkingDir%\%username%.bat" 
04.
ECHO )>> "%WorkingDir%\%username%.bat"
Das Resultat:

01.
FOR /F "delims=~" %A IN ('ECHO %username%> "%temp%\~%username%" & DIR /L /B "%temp%\~%username%"') DO ( 
02.
	SET username=%A 
03.
	DEL /Q ~%username% 
04.
)
Was ich in der Zieldatei benötige, sind die doppelten Prozentzeichen vor dem A.

Wenn ich im Original jetzt allerdings 3 statt 2 Prozentzeichen verwende:

01.
ECHO FOR /F "delims=~" %%%A IN ('ECHO %%username%%^> "%%temp%%\~%%username%%" ^& DIR /L /B "%%temp%%\~%%username%%"') DO (>> "%WorkingDir%\%username%.bat" 
02.
ECHO 	SET username=%%%A>> "%WorkingDir%\%username%.bat" 
03.
ECHO 	DEL /Q ~%%username%%>> "%WorkingDir%\%username%.bat" 
04.
ECHO )>> "%WorkingDir%\%username%.bat"
um die zwei Prozentzeichen zu erhalten, werden die beiden oberen Zeilen gar nicht mehr in die neue .bat Datei geschrieben.

Wie also bekomme ich ein doppeltes Prozentzeichen in der Zieldatei hin?

Tia,
Highend
Mitglied: Snowman25
24.02.2011 um 15:03 Uhr
Hallo ,

Du musst die Prozentzeichen escapen, damit sie vom Batch-Interpreter als Text interpretiert werden.
Beispiel (direkt auf der Kommandozeile):
U:\>echo ^%^%>test.txt 
 
U:\>type test.txt 
%%
Gruß
Snow
Bitte warten ..
Mitglied: Highend01
24.02.2011 um 15:08 Uhr
Hi Snow,

wenn ich das tue

01.
ECHO FOR /F "delims=~" ^%^%A IN ('ECHO %%username%%^> "%%temp%%\~%%username%%" ^& DIR /L /B "%%temp%%\~%%username%%"') DO (>> "%WorkingDir%\%username%.bat"
Dann bekomme ich als Ergebnis das hier raus:

01.
FOR /F "delims=~" A IN ('ECHO %username%> "%temp%\~%username%" & DIR /L /B "%temp%\~%username%"') DO (
D.h. beide Prozentzeichen, die escaped wurden, landen gar nicht mehr in der Zieldatei.

Gruß,
highend01
Bitte warten ..
Mitglied: Snowman25
24.02.2011 um 15:13 Uhr
Also ECHO FOR /F "delims=~" ^%^%A IN ('ECHO %%username%%^> "%%temp%%\~%%username%%" ^& DIR /L /B "%%temp%%\~%%username%%"') DO (^>^> "%WorkingDir%\%username%.bat" funktioniert bei mir wunderbar.
Ich glaube, das ist immernoch dein vorheriges Ergebnis, da du vergessen hast, die 2 Umleitungszeichen nach dem DO ( zu maskieren.

Gruß
Snow
Bitte warten ..
Mitglied: Highend01
24.02.2011 um 15:27 Uhr
Mh, warum sollte ich die Umleitungszeichen für das Schreiben in die neue Batchdatei maskieren, das sollen ja keine "gedruckten Zeichen" werden, sondern dazu dienen, die Zeile der entsprechenden Datei anzufügen?

Wenn ich deine Zeile 1:1 übernehme, landet in der Zieldatei nur noch eine leere Zeile, statt der erwünschten

01.
FOR /F "delims=~" %%A IN ('ECHO %username%> "%temp%\~%username%" & DIR /L /B "%temp%\~%username%"') DO (
In der Dos Box wird die Zeile zudem aufgelistet (die Original.bat Datei gibt selbst nichts auf der CMD aus):

01.
FOR /F "delims=~" A IN ('ECHO %username%> "%temp%\~%username%" & DIR /L /B "%tem 
02.
p%\~%username%"') DO (>> "D:\Users\Highend\Tools\Rsync\Highend.bat"
Gruß,
highend01
Bitte warten ..
Mitglied: Snowman25
24.02.2011 um 15:32 Uhr
Tut mir leid Highend, aber dann liegt dein Fehler woanders.
Möglicherweise hier? Wörter in Echo verschwinden - werden gedreht

Gruß
Snow
Bitte warten ..
Mitglied: bastla
24.02.2011 um 15:54 Uhr
Hallo Highend01 und Snow!

Das ist ausnahmsweise eine Situation, in der das Testen an der Kommandozeile nix bringt ...

In einem Batch werden Prozentzeichen verdoppelt benötigt - wenn ich also 2 im Ergebnis haben will, muss ich nicht 3, sondern 4 davon verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: Highend01
24.02.2011 um 16:09 Uhr
Jepp, das ist der Fehler, mit 4 Prozentzeichen bekomme ich in der Zieldatei dann auch tatsächlich die 2, die übrig bleiben sollen.

Danke für die Hilfestellung!
Bitte warten ..
Mitglied: jeb-the-batcher
24.02.2011 um 16:23 Uhr
Hallo,

@Snowman25:
Das Escapen von %-Zeichen klappt nicht mit ^, sondern ausschliesslich mit % (also Effektiv %% wie bastla schon geschrieben hat).

Das % ist übrigens das einzige Zeichen welches nicht auf ^ reagiert

Grüße
jeb
Bitte warten ..
Mitglied: Snowman25
24.02.2011 um 16:25 Uhr
Hallo jeb,

Dann hatte mein Gefühl doch recht, dass irgendetwas nicht ganz stimmt...
Ab und zu vergisst man sowas eben, wenn man selbst nie über das Problem stolpert

Gruß
Snow
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Variable aus anderer Bat-Datei holen
gelöst Frage von asterixBatch & Shell7 Kommentare

Hallo zusammen Ich möchte in einer Bat-Datei eine variable aus einer anderen Bat-Datei holen. Wie schaff ich das nun, ...

Batch & Shell
BAT - Leerzeichen in Variable entfernen
gelöst Frage von hoffi3dBatch & Shell5 Kommentare

Ich mal wieder. Ich lese gerade einige Dateien aus einem Verzeichniss aus und schreibe diese in eine Variable, das ...

Batch & Shell
Bestimmte Zeile aus mehreren Dateien in eine neue Datei schreiben
gelöst Frage von Oggy76Batch & Shell5 Kommentare

Hallo zusammen, meine Kenntnisse in Sachen batch/shell sind ehr auf Anfängerniveau zu sehen. Grund -basics im CMD-Prompt sind vorhanden, ...

Batch & Shell
Textdatei zeilenweise in Variable schreiben
gelöst Frage von goodbytesBatch & Shell20 Kommentare

Hallo, mit einer Batch möchte ich mehrere Laufwerke mappen, abhängig vom Usernamen. Klar könnte ich auch für jeden User ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 19 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement15 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows XP
Windows XP Aktivieren geht nicht
Frage von tetikmiroWindows XP13 Kommentare

Hallo Ich habe einen Windows XP mit einen vCenter Converter umgezogen auf eine ESXI. Soweit funktioniert dies auch ohne ...