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 Batch Zeichenfolge ersetzen für Registryerstellung

Mitglied: NickNack

NickNack (Level 1) - Jetzt verbinden

10.04.2007, aktualisiert 11.04.2007, 6494 Aufrufe, 17 Kommentare

Hallo bin neu und am totalen verzweifeln. Mein Chef meint das kann man doch sooo leicht lösen. Habe hier alles ähnliche schon ausprobiert und komm mit diesen Sachen nicht so klar.

Folgendes hat sich der liebe Chef ausgedacht.

Da es so viele liebe User gibt, die ab und zu die Dateien hin und her verschieben und damit Anwendungen nicht ganz korrekt laufen sollen die Anwendungen alternativ wieder neu nachgeregt werden, mit besagter CMD Datei.
-- das aktuelle Verzeichnispfad soll wo die Dateien drinliegen, temporär als Variable zwischengespeichert werden
-- dann soll die Variable dazu genutzt werden, mittels %Variable% eine Regdatei zu kreieren, wobei sich nur bestimmte Bereiche verändern, die CLSID sind davon nicht betroffen.
Für die RegDatei Erstellung sind als Zeichen notwendig "\" bzw das "@" Symbol
>Sprich momentan sieht es so aus@

Echo off
Nummer 1
  • Set Verzeichnis = %~dp0
Als Ergebnis habe ich das aktuelle Verzeichnis in der Form "C:\Programme ... "
Nun müsste eigentlich das eine "\" mit zweien "\\" ersetzt werden

jetzt kommt der Teil der Regdateierstellung mittels Umleitung
Nummer 2
  • echo REGEDIT4 >> %TEMP%\test.reg
  • echo >> %TEMP%\test.reg
  • echo [HKEY_LOCAL_MACHINESoftware\_test] >>%TEMP%\test.reg
{ { jetzt kommt das Problem mit dem @ Symbol und weswegen man Doppelbackslashs braucht }}
Nummer 3
  • echo @="%Verzeichnis%Dateiname.Endung" >> %TEMP%\test.reg
  • echo "ThreadingModel"="Apartment" >> %TEMP%\test.reg
Nummer 4
  • regedit %TEMP%\test.reg
  • del %TEMP%\test.reg
Mitglied: 46503
10.04.2007 um 17:34 Uhr
Das Betriebssystem der Rechner ist unwichtig?
Bitte warten ..
Mitglied: NickNack
10.04.2007 um 17:38 Uhr
Hm wir haben WinNt basierte Systeme. Also ab 2000 aufwärts.
Von einer BAT-Datei, die unter 98 und Konsorten laufen und wo diese %% beachtet werden müssen, nein. Gott sei Dank nicht.
Bitte warten ..
Mitglied: Biber
10.04.2007 um 17:42 Uhr
Moin NickNick,

willkommen im Forum. Und sei nicht so aufgeregt. Du hast doch schon 95% beisammen.

Zu Deiner Skizze würde ich nur empfehlen zu überprüfen:
  • macht das Sinn, den zufällig gerade aktuellen Pfad %~dp0, also den Pfad, in dem die aufgerufene Batchdatei liegt, in die Registry zu schreiben? Oder war das nur ein Beispiel?
  • mache im Batch nur dort aus optischen Gründen Leerzeichen, wo sie unbedenklich sind, d.h wo es keinen Unterschied macht, ob dort ein Leerzeichen mehr oder weniger ist. Speziell ist "@ echo off" etwas anderes als "@echo off" und ein "echo >>datei.reg" ist etwas anders als ein "echo.>>datei.reg". Ein "echo hallo>>test.txt" ist etwas anderes als "echo hallo >>test.txt".
Und ein "Set var = xx" bedeutet anders als "Set var=xx".

Die eigentliche Frage, das Ersetzen aller Backslashes durch zwei Backslashes geht so:
01.
Set Verzeichnis=%~dp0 
02.
... 
03.
Set "verzeichnis=%verzeichnis:\=\\%" 
04.
REM Syntax: ....Set var=%variable:alt=neu%"
Gruss Biber
Bitte warten ..
Mitglied: 46503
10.04.2007 um 17:46 Uhr
Ich würde den direkten Weg über REG gehen. Reg ist Bestandteil von XP Prof und läuft auch unter Windows 2000.

Reg /? in der Eingabeaufforderung bringt die Syntax.

Für das aktuelle Verzeichnis kannst du %cd% verwenden.
Bitte warten ..
Mitglied: NickNack
10.04.2007 um 17:52 Uhr
Okay ich hole mir mal kurz eine Papiertüre und ein Brecheisen. Zum hyperventilieren und das Brett vor dem Kopf wegzubekommen. ;)
So Ohm und nun Entspannung.

Also um die Sache der Sinnhaftigkeit. Wenn ich diese Frage meinen Chef stellen würde.
Ja es macht insofern Sinn weil Laufwerksbuchstaben bei USB-Sticks teilweise innerhalb der Firma nicht fix vergeben werden. Und wenn die Herren dann halt der Meinung sind ihre Daten zu verschieben und dann die Präsentation nicht läuft...

Das da Unterschiede gab wussste ich nicht, ob da nun Freizeichen dazwischen sind oder nicht. Richte ich mich an denjenigen der die meiste Ahnung hat. Sprich Du Biber.
Bitte warten ..
Mitglied: NickNack
10.04.2007 um 17:57 Uhr
Mit dem @ Symbol gibt es keine Probleme?
Muss das nicht nach dem Schema "Schlüssel" = "Wert" reingesetzt werden ?
Bitte warten ..
Mitglied: Biber
10.04.2007 um 18:11 Uhr
Nein, mit dem "@" gibt es keine Probleme. Eigentlich gibt es nie Problem beim Bätscheln.
Und in diesem Forum schon gar nicht... ich würde sagen, wir chatten hier nur ein bisschen rum....

Okay, im Ernst, Dein Vorschlag:
echo @="%Verzeichnis%Dateiname.Endung" >> %TEMP% est.reg
...enthält zwischen "echo" und den Umleitungszeichen ">>" NICHTS, was irgendwie Sonderzeichen im Batch wären.
Das wird also "Echo irgendein x-beliebiger Text>>inEineDate.reg" rausgedrückt.
Und der Platzhalter @ für den Defaultwert darf OHNE Anführungszeichen bleiben.

Verbesserungswürdig bzw. immer fehlerträchtig im Batch sind die Leerzeichen vor dem ">>".
Sicherer:
echo @="%Verzeichnis%Dateiname.Endung">>%TEMP% est.reg

Und der Zieldateiname soll bestimmt als nicht "%TEMP% est.reg" sein, sondern ein "%TEMP%\test.reg".
Beim Blättern im Bereich Batch & Shell (oder über Forumssuche "batch registry") findest Du aber ein paar Vorlagen.
Bzw., da Du ja auch fertig bist, "Vergleichsmöglichkeiten".

Gruss
Biber
Bitte warten ..
Mitglied: NickNack
10.04.2007 um 18:30 Uhr
Okay das ist die feine Unterscheidung. Ich habe halt solange im Board geschaut und mir war das echt schon peinlich mich überhaupt zu melden. Waren echt schwer überhaupt zu lesen was da gemeint ist.
Und ja es sollte
echo @="%Verzeichnis%Dateiname.Endung">>%TEMP%{ {ichbineinBackslash}}test.reg
heissen
Das Board lässt aber dieses Backslash nur bedingt zu. Hat den Eintrag extra 5 mal nachgearbeitet, immer wieder wird das Zeichen rausgenommen.
Bitte warten ..
Mitglied: 46503
10.04.2007 um 18:39 Uhr
%Temp%\\\\\\\\\\\


Das liegt an dem ">" ohne Leerzeichen vor dem "%"-Zeichen. Der Fehler ist bereits gemeldet.
Bitte warten ..
Mitglied: Biber
11.04.2007 um 14:45 Uhr
Moin NickNack,

können wir diesen Beitrag dann erstmal auf "erledigt" setzen oder sind noch Fragen offen?

Gruss
Biber
Bitte warten ..
Mitglied: 46503
11.04.2007 um 15:18 Uhr
'nabend Biber.

Ich habe keine Fragen. Ich hatte nur einen Vorschlag, aber den wollte ja niemand. :-P
Bitte warten ..
Mitglied: Biber
11.04.2007 um 15:42 Uhr
@46503,

ach was, Deinen Vorschlag, doch diesen Registry-Eintrag mit "Reg Add" zu schreiben hab ich nicht überlesen.

Dann schreibe ich mal stellvertretend eine mögliche Alternative hin:
01.
reg add HKEY_LOCAL_MACHINE\Software\_test /ve /t REG_SZ /d %~dp0Dateiname.Endung /f 
02.
reg add HKEY_LOCAL_MACHINE\Software\_test /v ThreadingModel /t REG_SZ /d Apartment /f
Besser?

Gruss Biber
[Edit] Fehlenden Backslash eingefügt, siehe hpdms Hinweis unten [/Edit]
Bitte warten ..
Mitglied: 46503
11.04.2007 um 15:54 Uhr
Klar doch. Warum sollte man (unnötigerweise) über temporäre Dateien gehen.

Du musst nur noch den fehlenden "\" einfügen. :-P
Bitte warten ..
Mitglied: NickNack
11.04.2007 um 17:08 Uhr
Vielen herzlichen Dank. Hat sich alles erledigt. Mein Chef ist glücklich gestellt und hat nicht schlecht geschaut über die Alternativen.

Ihr seit die besten.
Bitte warten ..
Mitglied: Biber
11.04.2007 um 18:20 Uhr
@46503
Du musst nur noch den fehlenden "\" einfügen. :-P

Mitnichten :-PP.
Diese merkwürdige Redmonder Softwareklitsche muss vielleicht endlich mal den abschliessenden Backslash bei der Bereitstellung des Pfades bei %~p0 weglassen.
Selbst unter Kumpels würde man/frau das als Bug bezeichnen.

Aber Tatsache ist: unbeeindruckt von weltweiten Programmiererkonventionen und jeglichen Einflüsterungen des verbliebenen gesunden Menschenverstandes ist M$ so ...ähm......so individuell und kreativ, dass die Pfadangaben mit abschliessendem Backslash ausgeben.

Demo:
01.
(=17:45:45  D:\temp=) 
02.
>(@echo @echo %~dp0>dp0.bat) & dp0 
03.
D:\temp\ 
Oder deutlicher:
%~d0 == Drive == "D:" (ohne abschliessenden Backslash)
%~p0 == Path == "\temp\" (mit abschliessendem Backslash)

Bedeutet: Wenn ich z.B. die gerade ausgeführte Batch als "bisherigerName_backup.extension" auf das Rootverzeichnis kopieren wollte:
01.
copy "%0" "%~d0\%~n0_backup%~x0"      
02.
REM ----> hier muss ich den "\" zwischen die Variablen packen
Kopiere ich in ein Parallel-Verzeichnis auf einem anderen Laufwerk:
01.
REM ----> hier soll ich den "\" zwischen "X:" und "%~p0" sowie %~p0 und %~n0 weglassen????? 
02.
REM wer soll denn sowas lesen??? Man stelle sich das in einem Batch vor: 
03.
set LW=X: 
04.
Set Backupkennung=_backup 
05.
copy "%0" "%LW%%~p0%~n0%Backupkennung%%~x0"     
Also, unterm Strich: Rein formal habe ich dich die "richtige" Syntax genommen.
Aber, da gebe ich Dir Recht, es sieht einfach Shice aus.
Und da die CMD.exe mir doppelte Backslashes in Pfadangaben nicht übelnimmt, würde ich auch schreiben:
01.
 ...REG_SZ /d %~dp0\Dateiname.Endung /f 
02.
REM ...was dann aufgelöst würde zu: 
03.
....REG_SZ /d D:\temp\\Dateiname.Endung /f
Wenn ich das allerdings in (weiter) obigem Batch gemacht hätte vor der Anweisung "Ersetze alle "\" durch "\\",
dann wäre herausgekommen:
01.
......REG_SZ /d D:\\temp\\\\Dateiname.Endung /f
Da ich nun fest davon ausgehe, dass ich weitere potentielle Zwischenrufer hinreichend unter den Tisch gelabert habe, werde ich den Beitrag jetzt schliessen.

Grüße
Biber
Bitte warten ..
Mitglied: 46503
11.04.2007 um 18:37 Uhr
Hier wird nicht gelabert. :-P

reg add HKEY_LOCAL_MACHINESoftware\_test /ve /t REG_SZ /d %~dp0Dateiname.Endung /f
-------------------------------------^ da fehlt ein "\"!
Bitte warten ..
Mitglied: Biber
11.04.2007 um 18:57 Uhr
Ach, den Backslash meintest Du.... *sichvornKoppklatsch*

Na gut, den ergänze ich....(oben im Posting).

Schönen Abend
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Zeichenfolge in Textdatei durch Inhalt einer Umgebungsvariable ersetzen

gelöst Frage von SarekHLBatch & Shell7 Kommentare

Hallo zusammen, wie kann ich mittels Batch in einer Textdatei die Zeichenfolge durch den Inhalt der Umgebungsvariable %username% ersetzen? ...

Batch & Shell

Die Zeichenfolge hat kein Abschlusszeichen - Batch mit mehrzeiligem Powershellbefehl

gelöst Frage von freshman2017Batch & Shell11 Kommentare

Hallo, leider finde ich hier den Fehler nicht, in der Doku finde ich auch nichts. Wer kann mir auf ...

Batch & Shell

Leerzeichen aus Zeichenfolge entfernen mit Batch FOR f Schleife

gelöst Frage von gexnerBatch & Shell2 Kommentare

Hallo! Ich möchte aus einer Zeichenfolge alle Leerstellen, egal ob vorne hinten oder in der Mitte, entfernen. In Anlehnung ...

Batch & Shell

XLXS zu CSV + Wert ersetzen - Batch

gelöst Frage von jochengBatch & Shell11 Kommentare

Hallo Leute ich habe ein Problem Ich brauch ein kleines Batch Script das ich täglich laufen lassen kann das ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 12 StundenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 12 StundenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 1 TagDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 1 TagSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
Exchange Server
Exchange Postfach Einbindung Betriebs-rat -Arzt, Bewerbung .
gelöst Frage von YellowcakeExchange Server23 Kommentare

Hey ich habe da mal eine Denksport Aufgabe bekommen Genutzt wird ein Exchange Server 2010. hier gibt es den ...

Windows Server
Downgrade von Windows Server 2016 auf 2012 - Wie vorgehen?
Frage von EstefaniaWindows Server13 Kommentare

Guten Ich habe eine Frage an Erfahrene unter euch. Durch einen InPlace Upgrade wurde Windows Server 2012 auf die ...

Datenschutz
Telematikinfrastruktur Erfahrungsaustausch
Frage von MOS6581Datenschutz12 Kommentare

Moin, unter meinen Kunden befinden sich auch einige Ärzte, welche sich künftig mit der Telematikinfrastruktur-Geschichte der Gematik herumärgern dürfen. ...

Windows Server
Delgegierte OU via RDP verwalten - Objektverwaltung zuweisen
gelöst Frage von TOAOICEWindows Server12 Kommentare

Hallo, ich habe folgendes Problem. Ich möchte in meiner Domäne (Server2016), einer Gruppe (OUAdmin) Berechtigungen auf die OU Test ...