Windows 如何在列文本文件窗口中更改日期格式

Windows 如何在列文本文件窗口中更改日期格式,windows,scripting,Windows,Scripting,我有一个txt文件,其中包含多行中的以下数据: 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,1

我有一个txt文件,其中包含多行中的以下数据:

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
我希望使用
.bat脚本将所有行中的日期格式更改为
YYYY/MM/DD

我尝试了以下方法:

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

但是,我只看到最新的日期行被更改,其余数据没有显示。

以防万一,如果您打开了powershell脚本,您可以尝试以下操作:

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

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
您需要在powershell中运行它(例如,在命令提示符下键入powershell)。
Get Conetent
获取输入文件的内容。
Foreach
命令迭代每一行。
replace
命令匹配正则表达式,并用匹配的变量替换行(但顺序不同)。如果不清楚,请随时要求澄清


如果需要不同的分隔符,请使用此命令而不是上述命令。它不查找特定的分隔符(如逗号或分号)


很抱歉,当我在另一个文件上尝试相同的代码时,该文件包含以下数据: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无效此数据中有一个新的分隔符(分号而不是逗号)。使用上面发布的新命令。
Get-Content data.txt | Foreach { $_ -replace "^(\d\d)/(\d\d)/(\d\d\d\d)(.*)",'$3/$1/$2$4' }