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 : TXT-Datei auslesen

Mitglied: Newplay123

Newplay123 (Level 1) - Jetzt verbinden

06.08.2019 um 11:05 Uhr, 435 Aufrufe, 20 Kommentare

Hallo,

ich habe eine Textdatei mit dem Inhalt " "Test" ".
Also die zweiten Anführungszeichen sind auch mit in der txt Datei .
Ich möchte diese Datei jetzt über eine Batch Datei auslesen und das Ergebnis als Variable speichern, da sie später noch benutzt wird.

Wenn ich es jetzt aber mit
01.
SET /p name=<C:\Test\TEMP\Datei.txt
02.

03.
echo %name%
ausprobiere kommt am Ende als echo nur " " ", also nur ein Anführungszeichen raus, wie kann ich es ändern das der ganze Inhalt wiedergegeben wird?

Mit freundlichen Grüßen
Jan
Mitglied: Kraemer
06.08.2019 um 11:13 Uhr
Moin,

hast du noch immer nicht gemerkt, dass Batch das falsche Mittel der Wahl ist?

Gruß
Bitte warten ..
Mitglied: 140447
06.08.2019, aktualisiert um 11:16 Uhr
Wie ich in deinem letzten Beitrag (auf den du nicht geantwortet hast) schon mal gesagt habe, das Encoding deiner Textdatei stimmt in dem Fall nicht mit dem der Konsole überein, denn mit einem normalen ANSI File geht das hier problemlos. Also prüfe das Encoding oder steige am besten gleich auf Powershell um.
Bitte warten ..
Mitglied: Newplay123
06.08.2019 um 11:28 Uhr
Hallo,

Ich erzeuge mit einem PowerShell Skript die CSV Datei.
Skript sieht so aus :

01.
[int]$line =3
02.
$csv = import-csv C:\stundenzettel\Import\import.csv -Header "Benutzername","Vorname","Nachname","Abteilung","Personal Nr.","Datum","Hinein","Hinaus","Dienstplan","Dauer","Saldo","Tage","Pause hinein","Pause hinaus","Dauer ohne Pause","Bemerkung","Urlaub" -Delimiter "`t"
03.
$spaltenname = "Nachname"
04.
$csv[($line - 1)] | select -Property $spaltenname | ConvertTo-Csv -NoTypeInformation -Delimiter "`t"  | select -Skip 1 |  Set-Content C:\stundenzettel\TEMP\Test.csv
Die daraus entstandene CSV Datei will ich jetzt wiederum in einer Batch Datei einlesen, wie geht dies dann bzw was muss ich in der PowerShell verändern damit die CSV Datei Problemlos in der Batch Datei eingelesen wird ?
Bitte warten ..
Mitglied: Newplay123
06.08.2019 um 11:29 Uhr
Wie soll ich dies denn deiner Meinung nach anders machen ?
Bitte warten ..
Mitglied: 140447
06.08.2019, aktualisiert um 11:34 Uhr
Bei einer Spalte ist das überflüssiger Overhead ...
01.
[int]$line =3
02.
$csv = import-csv 'C:\stundenzettel\Import\import.csv' -Header "Benutzername","Vorname","Nachname","Abteilung","Personal Nr.","Datum","Hinein","Hinaus","Dienstplan","Dauer","Saldo","Tage","Pause hinein","Pause hinaus","Dauer ohne Pause","Bemerkung","Urlaub" -Delimiter "`t"
03.
$csv[($line - 1)] | select -Expand Nachname | Set-Content 'C:\stundenzettel\TEMP\Test.csv' -Encoding Default
Bitte warten ..
Mitglied: dwaldmannDE
06.08.2019 um 11:33 Uhr
Hallo Newplay123,

ich kann meinen Vorrednern hier nur recht geben - Batch ist hier nicht mehr zeitgemäß. Du machst ja schon irgendwas in PowerShell, dann kannst du auch bei PowerShell bleiben. Was hast du eigentlich konkret vor?

Du importierst eine CSV und exportierst diese wieder? Wählst aber nur eine Spalte davon aus?

Versuch es mal so:

01.
Export-CSV -encoding
Gruß
Daniel
Bitte warten ..
Mitglied: Newplay123
06.08.2019 um 11:47 Uhr
Wenn ich es jetzt aber mit :
01.
set /p Name=<C:\stundenzettel\TEMP\Test.csv
02.
echo %Name%
versuche ,dann kommt als echo nur "%Name%" wieder raus und nicht der Inhalt der CSV-Datei.
Bitte warten ..
Mitglied: 140447
06.08.2019, aktualisiert um 11:55 Uhr
dann kommt als echo nur "%Name%"
In dem Fall ist deine Datei leer.
Schreib mal das hier in die Batch (nicht in die Konsole! Dort müsstest du aus den doppelten einfach Prozentzeichen machen)
01.
@echo off
02.
for /f "usebackq delims=" %%a in ("C:\stundenzettel\TEMP\Test.csv") do set "Name=%%a"
03.
echo %Name%
Wir kennen den Inhalt deiner ursprünglichen CSV Datei nicht, mal wieder Glaskugel polishing ...
Bitte warten ..
Mitglied: Newplay123
06.08.2019 um 11:55 Uhr
Dann kommt ,wenn ich die Batch ausführe, die Ausgabe : "ECHO ist ausgeschaltet (OFF)."
Bitte warten ..
Mitglied: 140447
06.08.2019, aktualisiert um 12:07 Uhr
Wie gesagt dann ist deine Datei leer.
Wir kennen den Inhalt deiner ursprünglichen CSV Datei nicht, mal wieder Glaskugel polishing ... . Du selektierst da mit Index und wir wissen ja nicht ob der überhaupt korrekt ist mangels Quelldaten!

Es wäre ja so einfach mal Ist Zustand ausführlich in Codetags zu posten stattdessen müssen wir dir alles aus der Nase ziehen . Denn es funktioniert hier ja einwandfrei, also liegt es an deinen Ausgangsdaten.
Bitte warten ..
Mitglied: Newplay123
06.08.2019 um 12:06 Uhr
Die Haupt CSV Datei sieht so aus :

import.csv - Klicke auf das Bild, um es zu vergrößern

Mit dem PowerShell Skript :

01.
[int]$line =3
02.
$csv = import-csv C:\stundenzettel\Import\import.csv -Header "Benutzername","Vorname","Nachname","Abteilung","Personal Nr.","Datum","Hinein","Hinaus","Dienstplan","Dauer","Saldo","Tage","Pause hinein","Pause hinaus","Dauer ohne Pause","Bemerkung","Urlaub" -Delimiter "`t"
03.
$csv[($line - 1)] | select -Expand Nachname | Set-Content 'C:\stundenzettel\TEMP\Test.csv' -Encoding Default
Versuch ich jetzt, in diesem fall die Spalte "Nachname" auszulesen und einzeln in eine CSV Datei zu schreiben.

Die Fertige "Test.csv" Datei sieht dann so aus :

test.csv - Klicke auf das Bild, um es zu vergrößern

Die dadurch entstandene "Test.csv" Datei versuche ich dann wiederum in einer Batch einzulesen und in diesem Fall als echo wiederzugeben, dies muss aber auch in einer Batch Datei bleiben.
Die dafür vorhandene Batch Datei sieht so aus :

01.
@echo off
02.
for /f "usebackq delims=" %%a in ("C:\stundenzettel\TEMP\Test.csv") do set name=%%a
03.
echo %name%
04.
pause>null
Wenn ich diese Datei dann ausführe kommt in der Batch Datei nur "ECHO ist ausgeschaltet (OFF). raus, obwohl ja ein Inhalt in der CSV-Datei ist.
Bitte warten ..
Mitglied: 140447
06.08.2019, aktualisiert um 12:11 Uhr
Die Anzeige in Excel ist Schall und Rauch! Lass es in einem Text-Editor anzeigen der auch unsichtbare Zeichen darstellt wie z.B. Notepad++.
do set name=%%a
Zweitens solltest du richtig kopieren lernen, du hast die Anführungszeichen aus meinem Code nicht mit übernommen.
Drittens lass dir das Encoding der Datei in Notepad++ anzeigen
Bitte warten ..
Mitglied: Newplay123
06.08.2019, aktualisiert um 12:15 Uhr
Notepad++ sagt der Inhalt der Test.csv Datei sieht so aus :
test.csv2 - Klicke auf das Bild, um es zu vergrößern

Warum sind da die "NUL" nach jeden Buchstaben ?


Die Anführungszeichen hab ich wirklich übersehen, wurden geändert.
Bitte warten ..
Mitglied: 140447
LÖSUNG 06.08.2019, aktualisiert um 12:17 Uhr
Zitat von Newplay123:

Notepad++ sagt der Inhalt der Test.csv Datei sieht so aus :
Na da hast du dein Problem.

Warum sind da die "NUL" nach jeden Buchstaben ?
Du hast beim Import mit Import-CSV das Encoding nicht passend auf die Quelldatei definiert Parameter -Encoding!!
Das Encoding dieser kennst wieder nur du. Wir haben die Quelldaten nicht, lade sie in Notepad++ und lass dir das Encoding anzeigen.
Wo habe ich Anführungszeichen vergessen ?
Vergleiche mit meiner Zeile oben dann sieht das ein Blinder mit Krückstock!
Bitte warten ..
Mitglied: 140447
06.08.2019 um 12:21 Uhr
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...

-Encoding

Specifies the encoding for the imported CSV file. The default value is UTF8NoBOM.

The acceptable values for this parameter are as follows:

ASCII: Uses the encoding for the ASCII (7-bit) character set.
BigEndianUnicode: Encodes in UTF-16 format using the big-endian byte order.
OEM: Uses the default encoding for MS-DOS and console programs.
Unicode: Encodes in UTF-16 format using the little-endian byte order.
UTF7: Encodes in UTF-7 format.
UTF8: Encodes in UTF-8 format.
UTF8BOM: Encodes in UTF-8 format with Byte Order Mark (BOM)
UTF8NoBOM: Encodes in UTF-8 format without Byte Order Mark (BOM)
UTF32: Encodes in UTF-32 format.
Bitte warten ..
Mitglied: Newplay123
06.08.2019 um 12:24 Uhr
Zitat von 140447:
Du hast beim Import mit Import-CSV das Encoding nicht passend auf die Quelldatei definiert Parameter -Encoding!!
Das Encoding dieser kennst wieder nur du. Wir haben die Quelldaten nicht, lade sie in Notepad++ und lass dir das Encoding anzeigen.

Das Encoding der Haupt Datei ist "UCS-2 Little Endian"(hab ich noch nie von gehört),dies wird aber von einem Programm so gemacht und kann ich nicht ändern. Dies muss so bleiben.

Ich entschuldige mich hier schon mal und danke dir das du mir trotzdem so hilfst.

Wie muss ich jetzt das -Encoding Parameter anpassen damit es funktioniert ?
Bitte warten ..
Mitglied: 140447
LÖSUNG 06.08.2019, aktualisiert um 12:47 Uhr
Schreib folgendes in die Batch dann ist das extra Powershell-Skript und die extra Ausgabedatei überflüssig
01.
@echo off
02.
for /f "delims=" %%a in ('powershell -EP Bypass -NoP -C "Import-CSV 'C:\stundenzettel\Import\import.csv' -Delimiter \"`t\" -header 'Benutzername','Vorname','Nachname','Abteilung','Personal Nr.','Datum','Hinein','Hinaus','Dienstplan','Dauer','Saldo','Tage','Pause hinein','Pause hinaus','Dauer ohne Pause','Bemerkung','Urlaub' -Encoding Unicode | select -Index 2 -Expand Nachname"') do set "name=%%a"
03.
echo %name%
Funktioniert hier mit UCS-2 LE (Vorgänger von UTF-16) einwandfrei.
Bitte warten ..
Mitglied: Newplay123
06.08.2019 um 12:46 Uhr
DANKE!!!

Ich habe einfach die Haupt Datei das Encoding geändert, so hat es funktioniert.

Danke für die Hilfe!
Bitte warten ..
Mitglied: Kraemer
06.08.2019 um 12:48 Uhr
Zitat von Newplay123:
Wie muss ich jetzt das -Encoding Parameter anpassen damit es funktioniert ?
du lässt dir auch alles vorkauen oder? Eine kurze Google-Suche hätte dir gesagt das UCS-2 eine Form von UTF-16 ist - dann ein Blick in die Tabelle oben und Überraschung:
Unicode: Encodes in UTF-16 format using the little-endian byte order.
Bitte warten ..
Mitglied: Kraemer
06.08.2019 um 12:50 Uhr
Zitat von Newplay123:
Ich habe einfach die Haupt Datei das Encoding geändert, so hat es funktioniert.
das ist keine Lösung - das ist ein Workaround
Bitte warten ..
Ähnliche Inhalte
Entwicklung

Batch oder Powershell für .txt-Datei

gelöst Frage von freshman2017Entwicklung5 Kommentare

Hallo liebe Gemeinde, ich habe eine .txt-Datei, die aus einer Artikelnummer und einem Bildname bestehen soll. Ausgangsdatei (export.txt) ist ...

Windows 7

BATCH: Alter einer TXT-Datei bestimmen

gelöst Frage von ahstaxWindows 75 Kommentare

Hallo, wie bekomme ich mit einer DOS-Batch das Alter einer TXT-Datei bestimmt und lassen dann, bspw bei Alter >16h, ...

Batch & Shell

txt Listen Auswerten per Batch-Datei

gelöst Frage von Ivowie97Batch & Shell9 Kommentare

Hallo Zusammen Ich habe zwei .txt Listen mit Werten drin, die ich mit einer Batch-Datei auswerten möchte. In der ...

Batch & Shell

Per Batch eine XLS-Datei in eine TXT-Datei umwandeln

Frage von skiing69Batch & Shell5 Kommentare

Hallo Wissende, ich möchte täglich automatisiert, ohne das Programm Excel zu öffnen, eine XLS-Datei in eine TXT-Datei (Feldtrennzeichen als ...

Neue Wissensbeiträge
Voice over IP

Telekom Umstellung von ISDN Anlagenanschluss auf IP-Telefonie

Erfahrungsbericht von NixVerstehen vor 2 TagenVoice over IP7 Kommentare

Hallo zusammen, nachdem nun vor ein paar Tagen die zwangsweise Umstellung von ISDN auf IP-Telefonie problemlos über die Bühne ...

Apple

Apple Special Event vom 10.09.2019: Arcade, TV+, iPad und iPadOS, Watch und iPhone 11

Information von Trontur vor 4 TagenApple2 Kommentare

Hier könnt ihr euch die Keynote von Tim Cook auf dem Apple Special Event vom 10.09.2019 anschauen: September Event ...

LAN, WAN, Wireless

Das RIPE ist quasi endgültig leer was IPv4 angeht

Information von LordGurke vor 11 TagenLAN, WAN, Wireless8 Kommentare

Das RIPE teilt mit, dass sie erwarten, Ende des Jahres keine /22-IPv4-Allocations (1.024 Adressen) mehr vergeben zu können. Dann ...

Verschlüsselung & Zertifikate

Ein besserer Weg zur Delegation of Control für Bitlocker Recoverykeys

Anleitung von DerWoWusste vor 11 TagenVerschlüsselung & Zertifikate

Will man Supportmitarbeitern ermöglichen, Bitlocker-Recoverykeys auszulesen, dann bietet sich eigentlich der Delegation of Control Wizard an. Ich zeige zunächst ...

Heiß diskutierte Inhalte
Hyper-V
Umzug Hyper-V mit VM in anderen Netzwerkabschnitt
gelöst Frage von keine-ahnungHyper-V9 Kommentare

Moin at all, ich habe leider den Freitag verpennt - daher meine obligate Freitagsfrage erst jetzt Ich habe einen ...

Windows 10
Windows 10 ( upgrade per media creator von win7 ) hat keine Systemwiederherstellung
gelöst Frage von knirschkeWindows 108 Kommentare

Hallo ! Habe letztlich mein Win7 auf Win10 aufgepeppt per Media Creator. Ging - obzwar recht spät - ganz ...

Windows Server
SATA Controler aktivieren an Fujitsu Primergy RX300 S7
Frage von darklivingWindows Server7 Kommentare

Guten Morgen zusammen, ich versuche gerade an einem Fujitsu Primergy Server den SATA Controller zu nutzen. Bis vor kurzem ...

Hardware
Ausrichtung Profilschienen - was würdet ihr empfehlen?
gelöst Frage von ShihanHardware7 Kommentare

Ich habe einen Digitus 19" 12 U Netzwerkschrank. Dieser hätte eigentlich nur vorne Profilschienen, da ich aber im hinteren ...