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 Verzwicktes Löschen eines Zeichens...

Mitglied: OlliMuc

OlliMuc (Level 1) - Jetzt verbinden

07.08.2012, aktualisiert 15:29 Uhr, 3316 Aufrufe, 17 Kommentare

Hallo zusammen, ich durchforste nun seit 3 Tagen Euer Archiv - habe auch einige Anregungen gelesen allerding stecke ich jetzt fest. Vermutlich ist mein Problem recht simpel...

Ich bekomme aus einer ZFA-Software eine Datei mit einer variierenden Anzahle von Gerätenummern, jeden in einer eigenen Zeile. Die Nummern beginnen mit Hochkomma und enden mit Hochkomma und einem Komma. Hier ein kleines Beispiel:

'1041070089529691',
'15131863',
'13703509',
'1126110052504629',

Ich muss diesen Datensatz so bearbeiten, dass in der ersten Zeile "where nr in (" steht und in der letzten Zeile ";)". Das habe ich soweit alles. Was mir ums Verrecken nicht gelingt ist das Löschen des Kommas nach der letzten Gerätenummer. Im Prinzip soll das letzte Zeichen der letzten Spalte gelöscht werden (das abschließende ";)" füge ich erste später ein).

Könnt ihr mir hier weiterhelfen?

Bis jetzt habe ich es so:

@echo off
set name="ISU-VR-nicht-gefunden-Bezug.txt"
set ziel="ISU-VR-nicht-gefunden-Bezug-Datensatz-fuer-ZFA.txt"
set "var="
FOR /F "delims=" %%A in ('type %name%') do if not defined var set var=%%A
echo %var:~0,-1%>%ziel%
more +1 %name%>>%ziel%


Aber so wird ja nimmer nur das letzte Zeichen der 1. Zeile gelöscht.

Vorab schon einmal vielen Dank!

Mitglied: Darkprodukt
07.08.2012, aktualisiert um 16:27 Uhr
Hallo OlliMuc und willkommen im Forum. und bitte schreibe doch nicht als Titel "Batch Problem

Die Fungtionierende Version:
01.
@echo off & setlocal 
02.
set name="ISU-VR-nicht-gefunden-Bezug.txt" 
03.
set ziel="ISU-VR-nicht-gefunden-Bezug-Datensatz-fuer-ZFA.txt" 
04.
set "Bak=bak" 
05.
set "Ret=%temp%\ret" 
06.
set Anzahl=0 
07.
set "var=" 
08.
 
09.
FOR /F "delims=" %%A in ('type %name%') do if not defined var set var=%%A 
10.
set "var=%var:,=%" 
11.
echo %var%>%ziel% 
12.
more +1 %name%>>%ziel% 
13.
 
14.
FOR /F "delims=" %%A in ('type %name%') do set LZeile=%%A 
15.
set "LZeile=%LZeile:,=%" 
16.
 
17.
for /f "delims=:" %%i in ('findstr /n "^" "%ziel%"') do set Anzahl=%%i 
18.
set /a MitCR=%Anzahl%-2 
19.
set /a OhneCR=%Anzahl%-1 
20.
 
21.
if %MitCR% leq 0 ( 
22.
    echo Die Datei "%Datei%" enthaelt zu wenig Zeilen! 
23.
    goto :eof 
24.
25.
 
26.
move "%ziel%" "%ziel%.%Bak%" 
27.
echo\>%Ret% 
28.
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%ziel%.%Bak%"') do ( 
29.
    if %%i leq %MitCR% (>>"%ziel%" echo\%%j) 
30.
    if %%i equ %OhneCR% ( 
31.
        if defined LZeile ( 
32.
            set /p=%LZeile%<%Ret%>>"%ziel%" 
33.
        ) else ( 
34.
            set /p=%%j<%Ret%>>"%ziel%" 
35.
36.
37.
)
Das meiste kommt übrigens von hier:
http://suche.administrator.de/forum/%C3%9Cber-Batch-letzte-Zeile-in-TXT ...

Grüße
Darkprodukt
Bitte warten ..
Mitglied: Karo
07.08.2012 um 15:19 Uhr
Hoi,

01.
@echo off 
02.
Setlocal EnableDelayedExpansion 
03.
set name="ISU-VR-nicht-gefunden-Bezug.txt" 
04.
set ziel="ISU-VR-nicht-gefunden-Bezug-Datensatz-fuer-ZFA.txt" 
05.
set var 
06.
set /A COUNT=0 
07.
set /A COUNT2=0 
08.
FOR /F "delims=" %%i in ('type %name%') do ( 
09.
  set /A COUNT=!COUNT! + 1 
10.
11.
FOR /F "delims=" %%A in ('type %name%') do ( 
12.
 SET VAR=%%A 
13.
 SET /A COUNT2=!COUNT2! + 1 
14.
REM  ECHO !COUNT2! von !COUNT! 
15.
 IF !COUNT2! NEQ %COUNT% ( 
16.
    IF !COUNT2! EQU 1 set var=where nr in ^(!var!>%ziel% 
17.
    echo !var!>>%ziel% 
18.
 ) ELSE ( 
19.
    echo !var:~0,-1!;^)>>%ziel% 
20.
21.
22.
 
bye
Karo
Bitte warten ..
Mitglied: Karo
07.08.2012 um 15:19 Uhr
oh, ich sollte mal F5 drücken ...
Bitte warten ..
Mitglied: OlliMuc
07.08.2012 um 15:33 Uhr
Titel ist geändert - sorry.

Teste gerade mal deine Variante...
Bitte warten ..
Mitglied: OlliMuc
07.08.2012 um 15:39 Uhr
Die Variante von darkprodukt läuft - super

Bei Karo wird das letzt Komma leider nicht gelöscht.

Ich danke Euch beiden für Eure Mühe!

Man lernt nie aus ... vlt schaff ich nun das nächste Problem selbst :D
Bitte warten ..
Mitglied: Karo
07.08.2012 um 15:41 Uhr
doch wird es.....
schau mal genau hin, da steht ein ';'

Karo
Bitte warten ..
Mitglied: OlliMuc
07.08.2012 um 15:51 Uhr
Ausgangsdatei:
'1041070089529691',
'15131863',
'13703509',
'1126110052504629',

Ergebnis:
where nr in ('1041070089529691',
'15131863',
'13703509',
'1126110052504629',;)

... hab nix manipuliert, wirklich
Bitte warten ..
Mitglied: Karo
07.08.2012 um 15:56 Uhr
...Du vielleicht nicht, aber wahrscheinlich ist in der letzten Zeile der Nummerndatei ein LEERZEICHEN nach dem Komma.
Denn wenn !var:~0,-1! das letzte Zeichen killt, kann es garnichts anderes sein.

Karo
Bitte warten ..
Mitglied: Darkprodukt
07.08.2012 um 16:00 Uhr
Kurzer Tipp:

Lösche das komma doch so:
01.
set "var=!var:,=! 
02.
echo %var%
Grüße
Darkprodukt
Bitte warten ..
Mitglied: OlliMuc
07.08.2012 um 16:00 Uhr
Komisch -- hab jetzt einen Testlauf unter "normalen" Bedingungen durchgeführt und plötzlich schaut die letzte Zeile so aus:

'1020090002213069' Settings\Temp\f\ret

Woran liegt das? Ich bin leider nicht so wirklich sicher in Batch...
Bitte warten ..
Mitglied: Darkprodukt
07.08.2012, aktualisiert um 16:28 Uhr
Hm...

Was ist den anders am durchlauf unter "normalen" Bedingungen?

Grüße
Darkprodukt
Bitte warten ..
Mitglied: OlliMuc
07.08.2012 um 16:19 Uhr
Am Durchlauf ist anders, dass vorher "where nr in )" eingefügt und danach ";)" eingefügt wird - aus einer anderen Software heraus.

Hab den Fehler - jemand hatte die Verzeichnise geändert, jetzt stimmt es wieder

Danke.
Bitte warten ..
Mitglied: OlliMuc
07.08.2012, aktualisiert um 16:25 Uhr
Das Ergebnis nach deiner angepassten "Karo-Variante" schaut so aus (wobei ich hinter set var noch ein "=" gesetzt habe - also set var=:

where nr in ('1041070089529691',
'15131863',
'13703509',
'1126110052504629' ;)


Das liegt nun an den Leerzeichen hinter den Kommas?
Bitte warten ..
Mitglied: Darkprodukt
07.08.2012 um 16:24 Uhr
Ok dann ist die Frage ja gelöst...

Grüße
Darkprodukt
Bitte warten ..
Mitglied: Darkprodukt
07.08.2012, aktualisiert um 16:43 Uhr
Ich habe die angepasste Karo-Variante wieder gelöscht,
da du ja sagtest das "where nr in (...;) etc." von einem anderen Programm gemacht werden und
das daher unnötig ist. Oder ist das eine andere Batch die nur dazu dient?

Und das "=" ist nicht nötig.

Wennschon so:
01.
set "var=!var:,=!"
Auserdem reicht es schon, wenn du Zeile 19 durch
01.
echo !var:,=!;^)>>%ziel% 
ersetzt.

Grüße
Darkprodukt
Bitte warten ..
Mitglied: OlliMuc
07.08.2012 um 16:46 Uhr
Die Ergänzungen werden in der Tat von einem anderen Programm eingetragen, nicht mittels Batch. - OK, daher ist das "=" überflüssig, gut.

Nochmal Danke.
Bitte warten ..
Mitglied: Darkprodukt
08.08.2012 um 00:27 Uhr
Ok,

wenn das Thema damit gelöst ist.

Markiere doch die Frage bitte als gelöst, Danke.

Grüße
Darkprodukt
Bitte warten ..
Ähnliche Inhalte
Python
Python von ZEICHEN bis ZEICHEN
gelöst Frage von schneerunzelPython2 Kommentare

Hallo, ich glaube ich habe eine ganz einfache Frage: Ich möchte aus eine Testdatei die So aufgebaut ist: ID;Vorname;Name;Jahrgang ...

Entwicklung

Delphi-Script: Abgriff von Zeichen bis Zeichen

gelöst Frage von archivarioEntwicklung3 Kommentare

Hallo zúsammen, vielleicht kann mir jemand helfen. Ich muss in einem Delphi Programm per Script ein bestimmtes Zeichen rausfiltern ...

Batch & Shell

Zeichen vor den letzten zwei Zeichen einfügen

gelöst Frage von JoachimKunzBatch & Shell3 Kommentare

Hallo Zusammen, ich habe ein kleines Problem und brauche eure Hilfe. Ich habe auf einen SELS 11 System eine ...

Ubuntu

Alle Zeilen mit Zeichen, die nicht auf einer deutschen Tastatur vorhanden sind, in einer UTF-8 Textdatei löschen?

gelöst Frage von takitanoUbuntu3 Kommentare

Hallo liebe Forum-Mitglieder, ich war lange nicht mehr hier. Ich habe ein folgendes Problem: ich will alle Zeilen in ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 6 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 6 StundenSicherheit

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

Viren und Trojaner
Neue Avira Management Console Egosecure
Information von OSelbeck vor 1 TagViren und Trojaner1 Kommentar

Hallöchen zusammen, ich weiß nicht, wer von euch noch Avira einsetzt Wir haben ein paar Kunden Avira hatte ja ...

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

Heiß diskutierte Inhalte
Exchange Server
Exchange Postfach Einbindung Betriebs-rat -Arzt, Bewerbung .
Frage von YellowcakeExchange Server15 Kommentare

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

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

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

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