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

Frage Entwicklung Batch & Shell

GELÖST

Variable mit ungefärem Zeichensatz vergleichen

Mitglied: Rufio3000

Rufio3000 (Level 1) - Jetzt verbinden

15.09.2009, aktualisiert 10:54 Uhr, 3770 Aufrufe, 8 Kommentare

Ich würde ganz gerne eine "dynamische Variable" mit Textteilen vergleichen, die nicht exakt mit der Variablen übereinstimmen.

Hi und einen schönen guten Morgen,
habe hier schon oft Anregungen und Tipps gefunden, aber diesmal hilft wohl nur ein eigener Beitrag.

Also, mein Problem ist folgendes:

Ich lese mehrere Dateien aus einem Verzeichnis aus und lasse, per ECHO, die Dateinamen und weitere relevante Informationen in eine Textdatei ausgeben.
Das funktioniert auch alles wunderbar, allerdings schaffe ich es nicht einen Vergleich anzustellen, bei dem die "ungefären" Textteile der Variablen als TRUE angesehen werden...

Hier mal das Bisherige:
@FOR /F "delims=" %%i IN ('DIR %SS%\*.exe *.msi /B') DO (
@IF "%%~ni" == "Name der Software OHNE Versionsnr. und u.U. mit Leerzeichen" SET "Silent=%MSI%"
@ECHO Filename: "{src}\%SS%\%%i"; Parameters: "%Silent%"; %RunFlags%>>Setup.txt
@PAUSE
)

Die Variable %MSI% ist schon definiert und soll, bei Vorhandensein eines bestimmten Dateinamens bzw. Names der Software, der durch %%~ni übergeben wird, an Stelle von %Silent% verwendet werden.
Da sich die Dateienamen mit der Versionsnr. (welche ich unbedingt beibehalten will) ändern, soll der Vergleich eben nur "so in etwa" stattfinden.
Ist es irgendwie möglich dass der Vergleich TRUE ergibt, wenn 2 oder mehr übereinstimmende Textteile mit %%~ni verglichen werden?

Danke schonmal für eure Hilfe, ihr schafft das!

MfG

Rufio3K
Mitglied: Rufio3000
15.09.2009 um 09:52 Uhr
Bitte kein VB.
Würde die ganze Sache gerne per Batch lösen.
Falls dafür seperate Software benötigt wird und diese Freeware ist, würde ich das ebenfalls dulden ;)
Bitte warten ..
Mitglied: bastla
15.09.2009 um 10:14 Uhr
Hallo Rufio3000!

Wenn ich "Zeichensatz" in Deinem Sinn richtig interpretiere, ist damit "Textteil" gemeint - in diesem Fall kannst Du mehrere "findstr" kombinieren, um auf eine entsprechende Anzahl an Übereinstimmungen zu prüfen - ungetestet also etwa:
01.
@echo off & setlocal 
02.
FOR /F "delims=" %%i IN ('DIR %SS%\*.exe *.msi /B') DO ( 
03.
    echo %%i|findstr /b /i "Name">nul && echo %%i|findstr /i "der">nul && echo %%i|findstr /i "Software">nul && set "Silent=%MSI%" 
04.
    ECHO Filename: "{src}\%SS%\%%i"; Parameters: "%Silent%"; %RunFlags%>>Setup.txt 
05.
    PAUSE 
06.
)
Zur Info: findstr /?

Grüße
bastla

P.S.: Da ich auch "duldsam" bin , nur als Hinweis für das nächste Mal: http://www.administrator.de/helpsystem/detail.php?idx=20#toc27
Bitte warten ..
Mitglied: Rufio3000
15.09.2009 um 10:25 Uhr
Textteile, richtig... hab's korrigiert.

Leider funktioniert deine Variante nicht.
Die Befehle werden zwar ausgeführt, allerdings wird %Silent% nicht ersetzt, sondern bleibt weiterhin bestehen.
Also, nichts steht da wo eigentlich %SILENT% bzw. %MSI% stehen müsste...
Woran kann das liegen?
Habs auch schon mit !Silent! probiert, allerdings ebenfalls ohne Erfolg
Bitte warten ..
Mitglied: Rufio3000
15.09.2009 um 13:00 Uhr
So, hab's jetzt so gelöst:

@FOR /F "delims=" %%i IN ('DIR %SS%\*.exe *.msi /B') DO (
ECHO %%~ni|FINDSTR /I "Name der Software" && IF %ERRORLEVEL% == 0 SET Silent=%MSI%
ECHO Filename: "{src}\%SS%\%%i"; Parameters: "!Silent!"; %RunFlags%>>Setup.iss
SET Silent=
)

Danke trotzdem für die Hilfe

MfG
Rufio3K
Bitte warten ..
Mitglied: bastla
15.09.2009 um 13:39 Uhr
Hallo Rufio3000!

Sorry - hatte nicht auf die Schleife geachtet ...
Habs auch schon mit !Silent! probiert, allerdings ebenfalls ohne Erfolg
So sollte es (noch immer ungetestet) mit "!Silent!" klappen:
01.
@echo off & setlocal enabledelayedexpansion 
02.
FOR /F "delims=" %%i IN ('DIR %SS%\*.exe *.msi /B') DO ( 
03.
    echo %%i|findstr /b /i "Name">nul && echo %%i|findstr /i "der">nul && echo %%i|findstr /i "Software">nul && set "Silent=%MSI%" 
04.
    ECHO Filename: "{src}\%SS%\%%i"; Parameters: "!Silent!"; %RunFlags%>>Setup.txt 
05.
    PAUSE 
06.
)
Grüße
bastla
Bitte warten ..
Mitglied: bastla
15.09.2009 um 13:42 Uhr
Hallo Rufio3000!

Wenn Du nur ein einziges "findstr" verwendest und der "Name der Software" Leerzeichen enthält, wird nach jedem einzelnen Wort dieses Namens gesucht und der Errorlevel ist 0, wenn auch nur eines davon im Dateinamen enthalten ist ...

... abgesehen davon, dass Du (wegen der Schleife) !ERRORLEVEL! abfragen müsstest (daher verwende ich stattdessen auch &&).

Grüße
bastla
Bitte warten ..
Mitglied: Rufio3000
15.09.2009 um 13:58 Uhr
Recht haste, habe noch ein /C: vor den Textteil gepackt und so macht's auch was es soll:

@FOR /F "delims=" %%i IN ('DIR %SS%\*.exe *.msi /B') DO (
ECHO %%~ni|FINDSTR /I /C:"Name der Software" && IF %ERRORLEVEL% == 0 SET Silent=%MSI%
ECHO Filename: "{src}\%SS%\%%i"; Parameters: "!Silent!"; %RunFlags%>>Setup.iss
SET Silent=
)

BTW: Irgendwie gingen die letzten Einträge bischen durchnander... siehe Timestamp; das mit !Silent! hatte ich schon so gemacht.
Also, vielen Dank für deine Hilfe

MfG
Rufio3K
Bitte warten ..
Mitglied: Rufio3000
15.09.2009 um 14:11 Uhr
Ah, wusste nicht mehr genau was das && zu bedeuten hat, aber danke.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch Abfrage Vergleiche mit Variable goto
gelöst Frage von ZunarasBatch & Shell4 Kommentare

Schönen guten Tag! ich habe mir ein Script gebastelt. Mehr nach dem Try and Error Prinzip als wirklichem Können. ...

Batch & Shell
In Batch eine Text Variable und ein Array vergleichen
Frage von DrMarksmanBatch & Shell5 Kommentare

Hallo Leute! Ich habe mich wieder zu meinen Ursprüngen des Programmierens zurück begeben und bin dabei ein kleines Programm ...

Batch & Shell
Javaversion mit Batch vergleichen und Übergabe Variable an VBScript
gelöst Frage von tklineBatch & Shell4 Kommentare

Hallo Leute, Hab mal wieder ein Spezialfall für euch Profis :-) Folgender Sachverhalt: Ein selbstgeschriebenes Programm namens "Breadcrumb" schreibt ...

Entwicklung
Powershell Inhalt von Variablen vergleichen und in eine CSV Speichern
gelöst Frage von BrewtalyEntwicklung5 Kommentare

Hallo zusammen, ich bin recht neu in der Scripting-Welt mit Powershell und habe deswegen noch einige Probleme ein Powershellscript ...

Neue Wissensbeiträge
Router & Routing

PfSense als Addon auf QNAP

Information von magicteddy vor 4 StundenRouter & Routing1 Kommentar

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 11 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 15 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement22 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...

Sonstige Systeme
7-zip: Programm frägt nach Passwort erst bei einzelnen Dateien
Frage von freeskierchrisSonstige Systeme7 Kommentare

Guten Morgen, ich habe ein Problem beim Arbeiten mit 7-zip: Wenn ich die einzelnen Dateien zu einem Archiv verpacke ...