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

Mittels Batch-Datei einen Installationspfad herausfinden

Frage Entwicklung Installation

Mitglied: sonoflithium

sonoflithium (Level 1) - Jetzt verbinden

19.05.2005, aktualisiert 18.10.2012, 13315 Aufrufe, 12 Kommentare

Mein Ziel ist es aus einer Textdatei einen bestimmten Teil herauszuschneiden und in eine neue datei einfügen. Bsp:
auszug der text datei (asdf.txt):
  DB OPEN    SERVER NAME  192.168.1.34:C:\Programme\consens\zc21\Daten\Ma1\ZcDatenbank.fdb   USER NAME  consens   OPEN

den Teil "C:\Programme\consens\zc21\Daten\Ma1\ZcDatenbank.fdb" müsste ich in einer anderen Textdatei abspeichern können...

Derzeitige batchdatei (auszug ):
set srvini="c:\asdf.txt"
echo %srvini%

For /F "tokens=1-100 delims= " %%A in (%srvini%) Do (
Echo %%A>> Konfig.txt
If "%%A"=="*:\*" (
Echo "%%A*">> Konfig.txt))

-------Leider funktioniert das überhaupt nicht
Kann mir jemand helfen?? -(ist sowas mit ner Batch-Datei möglich, besitze keinen Kompiler und bis auf den part wär eine Batch-Datei ziemlich praktisch)
Mitglied: 11078
19.05.2005 um 21:09 Uhr
Hallo,

zunächst einmal die vielleicht dumme Frage: Was sind das für Trennzeichen/Delimiter zwischen den einzelnen Einträgen innerhalb einer Zeile? Ich sehe hier Kästchen.

Ich habe die Datei asfd.txt für mich zum Testen deshalb mal vereinfacht und als Trennzeichen Kommata genommen (ich kenne mich mit dem Format nicht aus, also ergibt meine Testdatei vermutlich keinen Sinn), also

<font class="code">
NAME,192.168.1.34,C:\Programme\consens\zc21\Daten\Ma1\ZcDatenbank.fdb,USER,NAME,consens,OPEN
</font>

Zwischen der IP und dem Pfad habe ich mal ein Komma gesetzt, weil ich die Batch zum Testen ganz einfach wollte:


<font class="code">
@echo off

For /f "tokens=4 delims=," %%A in (asdf.txt) Do (
echo %%A>>konfig.txt)
</font>

Wenn der Pfad, den Du willst, immer an der selben Stelle steht, gibt doch einen festen Token an (s.o.)

Das schreibt mir in die Datei konfig.txt:

<font class="code">
C:\Programme\consens\zc21\Daten\Ma1\ZcDatenbank.fdb
</font>


Könnte es also am delimiter liegen?


Gruß,
TIM
Bitte warten ..
Mitglied: 13100
20.05.2005 um 03:00 Uhr
irgendwas.bat [srcfile] [result]
___________________________________________________________________
FOR /F "tokens=2,3 delims=:" %%A IN ('TYPE %1') DO echo %%A:%%B >> temp.tmp
FOR /F "tokens=1 delims= " %%C IN ('TYPE temp.tmp') DO echo %%C >> %2
DEL temp.tmp

_____________________________________________________________________
in der zweiten zeile ("delims=") gegebenenfalls das "kasterl" mit dem entsprechenden zeichen ersetzen.
Bitte warten ..
Mitglied: sonoflithium
20.05.2005 um 11:59 Uhr
Danke für die Antwort!

@Tim
Es sind Kästchen... ist eine Borland Konfigurationsdatei... weiss auch nicht warums ausgerechnet kästchen sind. Leider kann der Pfad unter Umständen GANZ woanders stehen und: Es kann mehrere davon geben.

@13100
Das kommt dem ganzen schon sehr nahe! ich denke damit bekomm ichs hin, danke!
Bitte warten ..
Mitglied: 13100
20.05.2005 um 12:58 Uhr
die kästchen sind mit sehr hoher wahrscheinlichkeit
tabulatoren die lediglich falsch angezeigt werden.
das format wird allseits gern als "tabstop getrennte
textdatei" bezeichnet.
Bitte warten ..
Mitglied: sonoflithium
23.05.2005 um 17:26 Uhr
Scheinen Trennzeichen zu sein, z. Glück gehts aber auch anders einfacher...
Aber: Meine gewonnenen Parameter muss ich noch in einer Exe eingeben, was natürlich automatisch funktionieren sollte.
Muster:
%javart%\bin\keytool.exe -genkey -alias tomcat -keyalg RSA -keystore %cd%\SSLkey.keystore
<----Aufruf der Exe-Datei
Nun müsste man manuelle Eingaben machen, die Werte hiefür habe ich aber in der *.bat, wie kann ich diese Werte übergeben / die Eingaben automatisieren??
Bitte warten ..
Mitglied: Robertico
19.09.2005 um 20:31 Uhr
Das Thema ist genau das was ich suche.

Habe einen EXE-Namen und muß nun wissen in welchem Pfad diese installiert wurde. Aus den Beiträgen kann ich das nicht heraus lesen.
Bitte warten ..
Mitglied: jtrumpfheller
31.01.2006 um 17:32 Uhr
Genau die gleiche Problematik tut sich bei mir bzw. bei meinem Kollegen auf:

aus einer Datei in einem bestimmten Verzeichnis sollen Zeilen ausgewertet werden, in dem Pfadangaben stehen, die später ausgeführt werden sollen.

Nehme ich den Befehl wie er als Beispiel in der "help for" steht und führe es direkt im Dos-Fenster aus:

FOR /F "eol=; tokens=2,3* delims=, " %i in (infile.dat) do @echo %i %j %k

wird das erwartete Ergebnis zurückgegeben.

Ausgabe:
X:\Pfadnamen\datei.bat
X:\Pfadnamen\datei2.ini
X:\Pfadnamen\datei3.ini
X:\Pfadnamen\datei4.ksh

Versuche ich das Ganze über eine Batch-Datei zu starten, kommt Blödsinn raus.
Batchdatei:
set IN_FILE="%USERPROFILE%\infile.dat"
FOR /F "eol=; tokens=2,3* delims=, " %%i in (%IN_FILE%) do @echo %%i %%j %%k

Ausgabe:
C:\Dokumente und Einstellungen\username>FOR /F "eol=; tokens=2,3* delims=, " %i
in ("C:\Dokumente und Einstellungen\username\infile.dat") do @echo %i %j %k
und Einstellungen\username\infile.dat

Geht das etwa nicht in einer Batch-Datei?

Gruß Jörg
Bitte warten ..
Mitglied: Biber
31.01.2006 um 20:00 Uhr
Moin jtrumpfheller,

klar funktioniert das in Batchdateien, das Problem liegt wieder in den Leerzeichen im Pfad zur infile.dat.

Du musst ja erreichen, dass die Variable %IN_FILE% in der IN-Liste der FOR-Anweisung zuverlässig als Datei interpretiert wird und nicht als Liste von Worten.

Du kannst diesen Interpretationsschwierigkeiten auf mehrere Arten aus dem Wege gehen. Am einfachsten auf die Art, wie angeldust es skizziert hat, mit einem ('type datei') in der Klammer.

Je nachdem, ob Du Deine Variable %IN_FILE% mit oder ohne Anfürungszeichen definiert hast:
(MIT Anfü's) set infile1="C:\Dokumente und Einstellungen\Biber\infile.dat"
(OHNE Anfü's) set "infile2=C:\Dokumente und Einstellungen\Biber\infile.dat"
(OHNE Anfü's) set infile3=C:\Dokumente und Einstellungen\Biber\infile.dat
set inf ...........(Abfrage am CMD-Prompt)
infile1="C:\Dokumente und Einstellungen\Biber\infile.dat"
infile2=C:\Dokumente und Einstellungen\Biber\infile.dat
infile3=C:\Dokumente und Einstellungen\Biber\infile.dat

...Aufruf im Batch:
....
FOR /F "eol=; tokens=2,3* delims=, " %%i in ('type %infile1%') do echo %%i %%j %%k
..bzw.
FOR /F "eol=; tokens=2,3* delims=, " %%i in ('type "%infile2%"') do echo %%i %j %%k
FOR /F "eol=; tokens=2,3* delims=, " %%i in ('type %"infile3%"') do echo %%i %j %%k
...

HTH Biber
P.S. Ich denke nicht, dass Deine Klausel "eol=; tokens=2,3* delims=, " so sinnvoll ist.
Wie sieht denn die Datei %IN_FILE% aus?
P.P.S. @Robertico
Vielen Dank für die Info. Vielleicht kann es ja jemand gebrauchen.
Bitte warten ..
Mitglied: jtrumpfheller
01.02.2006 um 00:20 Uhr
Hey Biber,

in der ifile.dat steht wie in der Ausgabe beschrieben mit dem Unterschied, daß vor der Pfadangabe noch Folgendes steht:
B14 X:\pathname\datei.bat
B14 X:\pathname\datei2.ini
B14 X:\pathname\datei3.ini
B14 X:\pathname\datei4.ksh
usw

Herauskommen soll aber nur der Pfadname+Datei

Gruß Jörg

Moin jtrumpfheller,

klar funktioniert das in Batchdateien, das
Problem liegt wieder in den Leerzeichen im
Pfad zur infile.dat.

Du musst ja erreichen, dass die Variable
%IN_FILE% in der IN-Liste der FOR-Anweisung
zuverlässig als
Datei interpretiert wird
und nicht als Liste von Worten.

Du kannst diesen
Interpretationsschwierigkeiten auf mehrere
Arten aus dem Wege gehen. Am einfachsten auf
die Art, wie angeldust es skizziert hat, mit
einem ('type datei') in der Klammer.

Je nachdem, ob Du Deine Variable %IN_FILE%
mit oder ohne Anfürungszeichen
definiert hast:
(MIT Anfü's) set
infile1="C:\Dokumente und
Einstellungen\Biber\infile.dat"
(OHNE Anfü's) set
"infile2=C:\Dokumente und
Einstellungen\Biber\infile.dat"
(OHNE Anfü's) set infile3=C:\Dokumente
und Einstellungen\Biber\infile.dat
set inf ...........(Abfrage am CMD-Prompt)
infile1="C:\Dokumente und
Einstellungen\Biber\infile.dat"
infile2=C:\Dokumente und
Einstellungen\Biber\infile.dat
infile3=C:\Dokumente und
Einstellungen\Biber\infile.dat

...Aufruf im Batch:
....
FOR /F "eol=; tokens=2,3* delims=,
" %%i in ('type %infile1%') do echo %%i
%%j %%k
..bzw.
FOR /F "eol=; tokens=2,3* delims=,
" %%i in ('type "%infile2%"')
do echo %%i %j %%k
FOR /F "eol=; tokens=2,3* delims=,
" %%i in ('type %"infile3%"')
do echo %%i %j %%k
...

HTH Biber
P.S. Ich denke nicht, dass Deine Klausel
"eol=; tokens=2,3* delims=, " so
sinnvoll ist.
Wie sieht denn die Datei %IN_FILE% aus?
P.P.S. @Robertico
Vielen Dank für die Info. Vielleicht
kann es ja jemand gebrauchen.
Bitte warten ..
Mitglied: Biber
01.02.2006 um 09:56 Uhr
Moin jtrumpfheller,

>>>>. Ich denke nicht, dass Deine Klausel "eol=; tokens=2,3* delims=, " so sinnvoll ist.
>>>>Wie sieht denn die Datei %IN_FILE% aus?

in der ifile.dat steht wie in der Ausgabe beschrieben mit dem Unterschied, daß
vor der Pfadangabe noch Folgendes steht:
B14 X:\pathname\datei.bat
B14 X:\pathname\datei2.ini
B14 X:\pathname\datei3.ini
B14 X:\pathname\datei4.ksh

Herauskommen soll aber nur der Pfadname+Datei

dann:
- brauchst du doch Token 2 ...es sei denn, es kommen auch Pfade/Dateinamen mit Leerzeichen vor. Aber auch dann würde "tokens=2,*" reichen
- ein Komma als Delimiter ist gar nicht drin, also kann die "delims=, "-Klausel entfallen
- das "eol=;" ...na ja...ich habe auch ein paar Minuten gebraucht, um die Bedeutung dieses Features zu verstehen. Schadet aber auch nicht.

IMHO ist überdimensioniert:
FOR /F "eol=; tokens=2,3* delims=, " %%i in ('type "%infile2%"') do echo %%i %j %%k

Reichen würde sicher:
FOR /F "eol=; tokens=2,*" %%i in ('type "%infile2%"') do echo %%i %j
...
und im Normalfall (keine Pfad/Dateinamen mit Leerzeichen) sogar
FOR /F "tokens=2" %%i in ('type "%infile2%"') do echo %%i

HTH Biber
Bitte warten ..
Mitglied: jtrumpfheller
01.02.2006 um 11:12 Uhr
Danke Biber,

Reichen würde sicher:
FOR /F "eol=; tokens=2,*" %%i in ('type "%infile2%"') do echo %%i %%j

das funktioniert. Da auch im Pfadnamen Leerstellen vorkommen können, ist obige Variante sinnvoll. Und wie kriege ich es jetzt hin, die einzelnen Ergebnisse auszuwerten. Nach dem Motto:

set IN_FILE="%USERPROFILE%\infile.dat"
FOR /F "tokens=2,*" %%i in ('TYPE %IN_FILE%') do set erg1='TYPE %%i'; set erg2='TYPE %%j'; if %%erg2%%!="" (@echo %%i%%j bzw. hier wird das Programm aufgerufen); if %%erg2%%=="" (@echo %%i bzw. oder hier wird das Programm aufgerufen)

Und muß alles in einer Zeile stehen? Mit Klammern nach do (
...
)

bekomme ich Syntaxfehler.

Sorry, aber bin noch relativ newbie auf dem Gebiet

Gruß Joerg
Bitte warten ..
Mitglied: Biber
01.02.2006, aktualisiert 18.10.2012
Moin Jörg,
wie es der Zufall will, habe ich grad gestern in dem Beitrag <a href=http://www.administrator.de/forum/zwei-dateien-vergleichen-%28z.b.-auf- ... target="blank">Zwei Dateien vergleichen (z.B. auf Größee) nach erfolgtem Copy</a> etwas wortreicher das Thema "Eine CMD-Anweisung in mehreren Zeilen schreiben" dargestellt.
Weitere Beispiele findest Du auch in den neueren Biber-Tutorials im Bereich Batch und Shell.

Das Semikolon wird von der CMD.exe nicht als Trennzeichen erkannt.
Am nächsten käme diesem Zeichen das Ampersand "&", mit dem sich mehrere Anweisungen in einer Zeile unterbringen lassen
Beispiel ist mein Standard-Eröffnungssatz im Batch :"@echo off & setlocal"
Bei mehreren SET-Anweisungen solltest Du Klammern verwenden, um eine eindeutige Interpretation sicherzustellen.
Bsp..
(Set "VarA=%%i") & (Set "VarB=%%j") ........ist eindeutig.
Set VarA=%%i & Set VarB=%%j ........ist für Mensch und CMD-Interpreter gleichermaßen missverständlich.
*
Sinngemäß sollte Deine FOR..IN..DO-Anweisung so aussehen:
FOR /F "tokens=2,*" %%i in ('TYPE %IN_FILE%') do (
set erg1='TYPE %%i'
set erg2='TYPE %%j'
....
)

Also jede Anweisung in eine neue Zeile - ist am lesbarsten.
Die öffnende Klammer sollte am Ende der Zeile "FOR...IN..DO (" sein
Und zur Lesbarkeit die Klammer-Zu in einer eigenen Zeile am Ende.

HTH Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Den größten mehrerer Werte herausfinden - Batch
gelöst Frage von fame.stylerBatch & Shell5 Kommentare

Hi Leute ;) nach ewigen Zeiten habe ich mal wieder eine Frage an meine Meister des Batch =) Gibt ...

Windows Server
Nachträglich kopierte-geloeschte Dateien herausfinden
Frage von gookchannelWindows Server1 Kommentar

Hallo zusammen, wir haben mehrer Fileserver im Einsatz. Es wurden nun auf 2 Fileserverv (2008 R2) diverse Dateien gelöscht ...

Batch & Shell
Angemeldeten Benutzer per GPO-Batch-Skript herausfinden
gelöst Frage von DeciderBatch & Shell4 Kommentare

Guten Tag, ich schreibe derzeit ein Batch-Skript in dem ich den angemeldeten Benutzernamen suche. Dieses Skript wird über eine ...

Batch & Shell
Orginalpfad eines verlinkten Verzeichnisses oder einer verlinkten Datei herausfinden
gelöst Frage von Scar61Batch & Shell8 Kommentare

Hallo zusammen, gibt es in einem Batch eine Möglichkeit herauszufinden, ob ein eingegebenes Verzeichnis irgendwo einen Link enthält? Hintergrund: ...

Neue Wissensbeiträge
Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 8 StundenInternet3 Kommentare

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

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 15 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 1 TagWindows 104 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 1 TagSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless18 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement17 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...