Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Per .bat oder .vbs 2 Spalten mit jeweils gleichem inhalt in eine vorhande csv Datei einfügen

Frage Entwicklung Batch & Shell

Mitglied: Addison

Addison (Level 1) - Jetzt verbinden

01.06.2010 um 13:54 Uhr, 5333 Aufrufe, 17 Kommentare

Hi@all

Ich habe folgendes Problem:

ich benötige ein Script, das in eine vorhandene Datei 2 Spalten einfügt und diese mit einem Bestimmten Wert füllt.

Leider habe ich von der Programiersprache nur Newbiekenntnisse.

die Suche hat mich auch nicht wirklich weitergebracht.

ich habe eine .txt date mit Semikolon getrennt, bei der ich in jeder Zeile zwei spalten einfügen möchte die mit dem gleichen Werten gefüllt werden.


Beispiel:


SpalteA;SpalteB;SpalteC;SpalteD;
test1;test2;test3;
test4;test5;test6;

jetzt möchte ich vor Spalte A noch zwei weitere Spalten eingefügt haben die dann Lauten Name1;Name2;

Name1 und Name2 soll in allen Zeilen derselbe bleiben.

'Wäre super wenn mir da jemand helfen könnte.

Idealerweise auch mir erklärung des scriptes, damit ich auch was lernen kann
Mitglied: 60730
01.06.2010 um 14:00 Uhr
Servus,

das sollte man relativ einfach mit den suchwörtern csv suchen ersetzen hier finden können.

Für eine einzelne .txt wird sich keiner die Mühe machen ein script zu schreiben, sondern:

  • diese txt in Excel importieren
  • die beiden Spalten dazumachen
  • mit einem Autowert füllen
  • als .txt exportieren

Ist bedeutend einfacher, sauberer (denn auch scripte machen nur das, was Sie sollen) und ressourcenschonender für alle

Gruß
Bitte warten ..
Mitglied: Addison
01.06.2010 um 14:04 Uhr
ich muss das nicht nur einmal machen, sondern am laufendem Band.

Die Grunddatei bleibt immer dieselbe nur mit anderem Inhalt.

Klar könnte ich jedesmal mit Excel arbeiten, aber das nervt auf die Dauer Darum will ich es mir mit einem Script vereinfachen.
Bitte warten ..
Mitglied: schuhmann
01.06.2010 um 14:13 Uhr
Benutz doch einfach in Excel den Makrorekorder.
Starte die Aufnahme, öffne deine Datei, Text in Spalten, 2 Spalten einfügen, Text eingeben, Ausfüllen.
Sollte ziemlich fix gehen.
Bitte warten ..
Mitglied: Addison
01.06.2010 um 14:19 Uhr
Ich möchte doch einfach nur ein Script oder eine Anleitung, oder einen Link wie ich das realisieren kann.

Klar kann ich das auch über ein Makro ausführen, aber dann muss ich jedesmal Excel öffnen die txt Datei importieren, das makro drüber laufen lassen, die datei schließen.

das würde länger dauern als wenn ich einen doppelklick auf ein Icon auf meinem Desktop mache.
Bitte warten ..
Mitglied: schuhmann
01.06.2010 um 14:25 Uhr
Das kannst du doch alles mit nem Makro machen.
Erstell dir einfach eine Makro.xls.
Dann machst du ein Makro und nennst es Auto_open. Dadurch wird das Makro direkt gestartet sobald du die XLS aufrufst.
Mit dem Makro kannst du dann deine txt öffnen, einlesen,....
Dann kannst du mit dem Makro Speichern unter machen und die Arbeitsmappe und Excel wieder schließen lassen mit close.
Alles voll automatisch. Du musst dann nur deine XLS andrücken und der Rest geht automatisch.
Bitte warten ..
Mitglied: Biber
LÖSUNG 01.06.2010, aktualisiert 13.04.2015
Moin Addison,

ich weiss jetzt nicht, warum die Jungs & Mädels dir nun unbedingt eine turbodynamische Dreigang-Sensitiv-Automatik andrehen wollen.

Demo am CMD-Prompt:
> rem Originaldatei 
>for /f "delims=" %i in (e:\schnipsel\addison.csv) do @echo %i 
SpalteA;SpalteB;SpalteC;SpalteD; 
test1;test2;test3; 
test4;test5;test6; 
 
 
> REM Zwei konstante neue "Spalten" dazugemogelt. 
>for /f "delims=" %i in (e:\schnipsel\addison.csv) do @echo Name1;Name2;%i 
Name1;Name2;SpalteA;SpalteB;SpalteC;SpalteD; 
Name1;Name2;test1;test2;test3; 
Name1;Name2;test4;test5;test6;
Das Ergebnis wird jetzt ja auf den Bildschirm ausgegeben.
--> also sollte noch ans Ende der Zeile ein Umleitungsbefehl wie z.B. >X:\ErweiterteDateien\NeueAddison.csv

Als Batchvariante wären zwei Prozentzeichen statt eines vonnöten bei der Laufvariablen %i.

Grüße
Biber
Bitte warten ..
Mitglied: 60730
01.06.2010 um 14:44 Uhr
Zitat von Biber:
Moin Addison,

ich weiss jetzt nicht, warum die Jungs & Mädels dir nun unbedingt eine turbodynamische Dreigang-Sensitiv-Automatik
andrehen wollen.

Salü Biber,

weil es mit der Dreigang-Sensitiv-Automatik einfacher ist
Ok "Noch" einfacher ists natürlich sich den bequemen, schreib mal und schreibs dann bitte auch so, dass ich was lerne Vollautomatikkurs zu wählen

Grüße
Biber

zurück
Bitte warten ..
Mitglied: Addison
01.06.2010 um 14:50 Uhr
ich hab zwar keine Ahnung was du für ein Problem hast aber gesucht habe ich schon eine Menge. ich habe nur leider nicht die Programierkenntnisse die ich hierfür bräuchte.

Aber es gibt ja zum Glück Leute die Hilfreich sind.

ich will kein fertiges Script, es reicht mir wenn ich Tipps bekomme mit welchen Behfehlen ich das hinbekomme.

@Biber Vielen Dank ich probier gleich mal aus.
Bitte warten ..
Mitglied: 60730
01.06.2010 um 15:00 Uhr
Zitat von Addison:
ich hab zwar keine Ahnung was du für ein Problem hast

"entspann" dich mal
ich hab nur das "Problem" dass ich nebenbei auch arbeite und mit einer Zeile die da sinnngemäß lautet:
Ich hab eine .txt möglicherweise etwas anderes interpretiert habe, das du gemeint hast.

aber gesucht habe ich schon eine Menge
Naja aber bestimmt nicht hier mit den oben von mir genannten Suchwörtern
Es gab mal eine Zeit, da wurden unsere fleissigen Biber & Bastla tagtäglich mit immer den gleichen "such mir was und ersetze es" vollgeschrieben ;-(

ich habe nur leider nicht die Programierkenntnisse die ich hierfür bräuchte.

Nungut, aber die häts ja mit dem suchen auch nicht gebraucht

Aber es gibt ja zum Glück Leute die Hilfreich sind.

Bin ich eigentlich üblicherweise auch, aber manchmal kommt einem die eigene Arbeit dazwischen.
Und auch Biber hat dir einen Bärendienst erwiesen - denn ohne eine Abfrage, ob denn diese .txt bereits die zusätzlichen Werte hat und in dem Fall nix zu tun ist - würde ich das nicht machen

ich will kein fertiges Script, es reicht mir wenn ich Tipps bekomme mit welchen Behfehlen ich das hinbekomme.

Gib mal:
find /?
sowohl in der Dosbox, als auch hier in der Suche ein.

Gruß
Bitte warten ..
Mitglied: LotPings
01.06.2010 um 15:38 Uhr
Zitat von 60730:
Gib mal:
find /?
sowohl in der Dosbox, als auch hier in der Suche ein.
Hallo @ All,

Da "DosBox" ja inzwischen als 3rd Party Programm existiert, würde ich eine Bezeichnung "Eingabeaufforderung", "Console" oder "CMD-Shell" dem eher unprofessionellen DosBox vorziehen

Konkret wäre hier, das ja auch nur eine der neuen Spalten vorhanden sein könnte, findstr geeigneter.

01.
Echo off 
02.
:: Dateiname zum Erweitern per Parameter übergeben 
03.
Set "InFile=%~1"  
04.
:: Neuer Dateiname mit angehängtem _X 
05.
Set "OutFile=%~dpn1_X%~x1" 
06.
:: Erste Zeile (Header) Einlesen 
07.
Set /P Header=<"%InFile%" 
08.
:: Prüfen ob neue Spalten schon im Header vorhanden, wenn ja Hinweis und Exit 
09.
Echo %Header%|Findstr /i "Name1 Name2" >NUL 2>&1 && (Echo Spalten schon da&Exit /B 1) 
10.
:: Neue Datei zurücksetzen 
11.
Type NUL >"%OutFile%" 
12.
:: Allen Zeilen neue Spalten voranstellen 
13.
for /f "usebackq delims=" %%A in ("%InFile%") do >>"%OutFile%" Echo Name1;Name2;%%A 
14.
:: Testausgabe alte und neue Datei 
15.
type "%InFile%" "%OutFile%"
Gruß
LotPings

Edit: PS: Für nicht im Programmieren bewanderte wäre ein Programm wie CSV-Editor noch zu empfehlen.
Bitte warten ..
Mitglied: Addison
01.06.2010 um 15:47 Uhr
@Timo

sorry sollte kein Angriff sein.

ich habe heut schon über ne stunde gegoogelt und nix brauchbares für mein Prob. gefunden, sondern nur ähnliches, wobei die Befehle mir noch fremd sind.
Bitte warten ..
Mitglied: Addison
01.06.2010 um 16:23 Uhr
for /f "delims=" %%i in (c:\test\a.txt) do @echo Name1;Name2;%%i>c:\Test\test.txt

klappt wunderbar!!!

nur leider nimmt er nur die letzte Zeile aus meiner Ursprungsdatei
Bitte warten ..
Mitglied: schuhmann
01.06.2010 um 16:39 Uhr
du musst ein >> bei der Ausgabe machen, also >>C:\test\test.txt
">" ist ersetzen
">>" ist anhängen
Bitte warten ..
Mitglied: 60730
01.06.2010 um 16:51 Uhr
Zitat von LotPings:
Da "DosBox" ja inzwischen als 3rd Party Programm existiert, würde ich eine Bezeichnung "Eingabeaufforderung", "Console" oder "CMD-Shell" dem eher unprofessionellen DosBox vorziehen

[OT]
naa gut, aber ich nenne trotzdem immer noch so, auch wenn irgendwann einer der beiden Klitsch Kos ne Bude aufmacht und die so nennt - mir egal
Edit: PS: Für nicht im Programmieren bewanderte wäre ein Programm wie CSV-Editor noch zu empfehlen.

Nö - der ist auch für im programmieren - *hust* scripten bewanderte durchaus ein nettes Werkzeug.
[/OT]

Ob nun find oder findstr ist in dem fall doch Jacke wie Hose
Bitte warten ..
Mitglied: Addison
01.06.2010 um 16:54 Uhr
Vielen Dank!!! so ists Perfekt
Bitte warten ..
Mitglied: Biber
02.06.2010 um 10:35 Uhr
Moin Addison,

auch wenn schon alles "gelöst" ist, noch eine Ergänzung zum Neuerstellen/Anfügen mot den Pipes ">" und ">>".

Bei der ">>"-Variante, die du jetzt (noch zu deiner Zufriedenheit) verwendest, werden neue Zeilen an eine vorhandene Datei dieses Namens angehängt.
Okay, natürlich nur dann, wenn denn bereits eine existiert - sonst wird eine eine neue erstellt.

Falls du aber in deinem Szenario aus Versehen deinen Oneliner 2x startest, dann hast du bei 100 Original-Zeilen dann 200 mutierte Zeilen in deiner neuen Textdatei.

Deshalb würde ich schon die ">" [=Neuerstellen] statt ">>" [=Anfügen]-Pipe verwenden.

Alledings soll sich die ">"-Pipe ja auf das Ergebnis der gesamten FOR-Anweisung beziehen, also musst du das auch dadurch deutlich machen, dass du die ganze FOR-Anweisung [quasi als Gesamtkunstwerk ] in Klammern setzt.

Demo:
01.
>for /f "delims=" %i in (e:\schnipsel\addison.csv) do @echo Name1;Name2;%i 
02.
Name1;Name2;SpalteA;SpalteB;SpalteC;SpalteD; 
03.
Name1;Name2;test1;test2;test3; 
04.
Name1;Name2;test4;test5;test6; 
05.
 
06.
(=10:32:00  D:\temp=) 
07.
>(for /f "delims=" %i in (e:\schnipsel\addison.csv) do @echo Name1;Name2;%i) >AddisonNeu.csv 
08.
 
09.
(=10:32:46  D:\temp=) 
10.
>type AddisonNeu.csv 
11.
Name1;Name2;SpalteA;SpalteB;SpalteC;SpalteD; 
12.
Name1;Name2;test1;test2;test3; 
13.
Name1;Name2;test4;test5;test6;
Grüße
Biber
Bitte warten ..
Mitglied: LotPings
06.06.2010 um 13:46 Uhr
Zitat von 60730:
Hab das erst jetzt registriert,
Ob nun find oder findstr ist in dem fall doch Jacke wie Hose
nicht ganz, bei der Oder-Abfrage von zwei Begriffen kommt einem da "findstr.exe" by default sehr entgegen.

Gruß
LotPings
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...