2016-11-29 1 views
-1

Ich habe eine TXT-Datei mit den folgenden Daten in mehreren Zeilen ändern:Wie Datumsformat in der Spalte Textdatei von Windows

10/01/2015,125.99,129.00,125.00,128.97,1615600 
10/02/2015,129.92,129.92,127.01,128.81,509800 
10/05/2015,129.50,130.00,125.50,126.37,876500 
10/06/2015,128.00,131.70,128.00,130.67,1043000 
10/07/2015,134.00,135.45,132.60,134.49,1181500 
10/08/2015,133.90,133.90,131.60,132.25,736700 
10/09/2015,135.01,138.50,135.00,137.80,1493200 
10/12/2015,139.90,142.80,138.12,141.85,1879800 
10/13/2015,138.80,139.50,137.75,137.99,1103600 
10/14/2015,138.34,138.79,137.11,137.92,505200 
10/15/2015,138.00,138.80,134.50,135.21,481600 
10/16/2015,135.10,140.31,133.51,138.62,2431700 
10/19/2015,138.51,139.89,137.50,137.94,521700 

ich das Datumsformat YYYY/MM/DD will in allen Linien eines .bat script Verwendung geändert werden.

Ich habe versucht, die folgenden:

@echo off&setlocal 
for /f "tokens=1,2,3,* delims=,/ " %%i in ('type "kam3.txt"') do (
echo %%k/%%i/%%j,%%l 
)>"newfile.txt" 

Allerdings habe ich nur sehen, die neueste Datumsgrenze geändert wird und der Rest der Daten zeigt nicht.

Antwort

0

Nur für den Fall, wenn Sie ein Powershell-Skript geöffnet sind, können Sie dies versuchen:

Get-Content data.txt | Foreach { $_ -replace "^(\d\d)/(\d\d)/(\d\d\d\d),(.*)",'$3/$1/$2,$4' } 

Ergebnis:

2015/10/01,125.99,129.00,125.00,128.97,1615600 
2015/10/02,129.92,129.92,127.01,128.81,509800 
2015/10/05,129.50,130.00,125.50,126.37,876500 
2015/10/06,128.00,131.70,128.00,130.67,1043000 
2015/10/07,134.00,135.45,132.60,134.49,1181500 
2015/10/08,133.90,133.90,131.60,132.25,736700 
2015/10/09,135.01,138.50,135.00,137.80,1493200 
2015/10/12,139.90,142.80,138.12,141.85,1879800 
2015/10/13,138.80,139.50,137.75,137.99,1103600 
2015/10/14,138.34,138.79,137.11,137.92,505200 
2015/10/15,138.00,138.80,134.50,135.21,481600 
2015/10/16,135.10,140.31,133.51,138.62,2431700 
2015/10/19,138.51,139.89,137.50,137.94,521700 

Sie müssen dies in Powershell (Typ Powershell auf Befehl ausgeführt werden soll Aufforderung, z. B.,). Die ruft den Inhalt der Eingabedatei ab. Der Befehl Foreach iteriert über jede Zeile. Der Befehl replace stimmt mit dem regulären Ausdruck überein und ersetzt die Zeile durch die übereinstimmenden Variablen (jedoch in anderer Reihenfolge). Wenn es nicht klar ist, fragen Sie nach einer Klarstellung.


Wenn Sie andere Trennzeichen verwenden möchten, verwenden Sie diesen Befehl anstelle des oben genannten. Es sucht nicht nach einem bestimmten Trennzeichen (wie Komma oder Semikolon).

Get-Content data.txt | Foreach { $_ -replace "^(\d\d)/(\d\d)/(\d\d\d\d)(.*)",'$3/$1/$2$4' } 
+0

Vielen Dank, es hat funktioniert. – Zam

+0

Entschuldigung, aber wenn ich den gleichen Code auf meiner anderen Datei versuche, die die folgenden Daten hat: 01.10.2015; 125,99; 129,00; 125,00; 128,97; 1615600 10/02/2015; 129,92; 129,92; 127,01; 128,81; 509.800 2015.10.05; 129,50; 130,00; 125,50; 126,37; 876.500 2015.10.06; 128,00; 131,70; 128,00; 130,67; 1.043.000 2015.10.07; 134,00; 135,45; 132,60; 134,49; 1.181.500 10.08.2015; 133.90; 133.90; 131.60; 132.25; 736700 10/09/2015; 135.01; 138.50; 135.00; 137.80; 1493200 es funktioniert nicht – Zam

+0

Sie haben ein neues Trennzeichen in diesen Daten (Semikolon statt Komma). Verwenden Sie den neuen Befehl wie oben beschrieben. – blackpen

Verwandte Themen