在csv文件中更改date时间格式

我有这个结构的多个CSV文件:

text, text, 01/27/2001 01:00:00 PM 

我需要用这个date时间格式更新所有csv文件:

 text, text, 27-Jan-2001 13:00:00 

有没有办法通过batch file/另一种自动化的方式吗?

谢谢,

这可以在批处理文件中完成,只需要一行PowerShell命令。 PowerShell内置于所有新的操作系统(在Win7,Win2008之后),也可以安装在传统操作系统上。

下面是代码和示例输出 –

 @echo off for /f "delims=" %%x in ('dir /b *.csv') do ( for /f "usebackq tokens=1-3* delims=," %%i in ("%%~fx") do ( for /f "delims=" %%a in ('powershell -command \"{0:dd-MMM-yyyy HH:mm}\" -f [datetime]^('%%k'^)') do >>"%%~nx_new.csv" echo %%i,%%j, %%a ) ) 

测试输出 –

 C:\Scripts>type input1.csv text, text, 01/27/2001 10:00:00 PM text, text, 01/27/2001 11:00:00 AM text, text, 01/27/2001 02:00:00 PM text, text, 01/27/2001 12:00:00 AM text, text, 01/27/2001 01:00:00 PM C:\Scripts>type input2.csv text, text, 01/27/2001 10:00:00 PM text, text, 02/27/2002 11:00:00 AM text, text, 03/27/2003 02:00:00 PM text, text, 04/27/2004 12:00:00 AM text, text, 05/27/2005 01:00:00 PM C:\Scripts>draft.bat C:\Scripts>type input1_new.csv text, text, 27-Jan-2001 22:00 text, text, 27-Jan-2001 11:00 text, text, 27-Jan-2001 14:00 text, text, 27-Jan-2001 00:00 text, text, 27-Jan-2001 13:00 C:\Scripts>type input2_new.csv text, text, 27-Jan-2001 22:00 text, text, 27-Feb-2002 11:00 text, text, 27-Mar-2003 14:00 text, text, 27-Apr-2004 00:00 text, text, 27-May-2005 13:00 

干杯,G

下面的批处理文件应该运行得更快,因为它不使用任何外部文件(如470KB大小的powershell.exe文件)。

 @echo off setlocal EnableDelayedExpansion set i=100 for %%a in (Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) do ( set /A i+=1 set "month[!i:~1!]=%%a" ) for /F "delims=" %%n in ('dir /AD /B *.csv') do ( (for /F "usebackq tokens=1-3 delims=," %%x in ("%%n") do ( for /F "tokens=1-7 delims=/: " %%a in ("%%z") do ( set hour=%%d if "%%g" equ "PM" ( set /A hour=1!hour!+12-100 if !hour! equ 24 set "hour=0" if !hour! lss 10 set "hour=0!hour!" ) echo %%x,%%y, %%b-!month[%%a]!-%%c !hour!:%%e:%%f ) )) > "%%~Nn_new.csv" ) 

这可以用24个Perl正则表达式替换文件,将文本编辑器UltraEdit放入UltraEdit宏中。

 InsertMode ColumnModeOff HexOff PerlReOn ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "01/([0-3]\d)/([12][09]\d\d)" "\1-Jan-\2" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "02/([0-3]\d)/([12][09]\d\d)" "\1-Feb-\2" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "03/([0-3]\d)/([12][09]\d\d)" "\1-Mar-\2" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "04/([0-3]\d)/([12][09]\d\d)" "\1-Apr-\2" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "05/([0-3]\d)/([12][09]\d\d)" "\1-May-\2" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "06/([0-3]\d)/([12][09]\d\d)" "\1-Jun-\2" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "07/([0-3]\d)/([12][09]\d\d)" "\1-Jul-\2" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "08/([0-3]\d)/([12][09]\d\d)" "\1-Aug-\2" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "09/([0-3]\d)/([12][09]\d\d)" "\1-Sep-\2" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "10/([0-3]\d)/([12][09]\d\d)" "\1-Oct-\2" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "11/([0-3]\d)/([12][09]\d\d)" "\1-Nov-\2" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "12/([0-3]\d)/([12][09]\d\d)" "\1-Dec-\2" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "01(:[0-5]\d:[0-5]\d) PM" "13\1" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "02(:[0-5]\d:[0-5]\d) PM" "14\1" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "03(:[0-5]\d:[0-5]\d) PM" "15\1" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "04(:[0-5]\d:[0-5]\d) PM" "16\1" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "05(:[0-5]\d:[0-5]\d) PM" "17\1" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "06(:[0-5]\d:[0-5]\d) PM" "18\1" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "07(:[0-5]\d:[0-5]\d) PM" "18\1" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "08(:[0-5]\d:[0-5]\d) PM" "20\1" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "09(:[0-5]\d:[0-5]\d) PM" "21\1" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "10(:[0-5]\d:[0-5]\d) PM" "22\1" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "11(:[0-5]\d:[0-5]\d) PM" "23\1" ReplInFiles MatchCase RegExp Log "C:\Temp\" "*.csv" "([01]\d:[0-5]\d:[0-5]\d) [AP]M" "\1" 

此UltraEdit宏修改目录C:\Temp中所有CSV文件中的日期和时间字符串。

我不使用Notepad ++。 但我认为那些24位正则表达式替换也可以在一个目录的所有CSV文件上用Notepad ++执行。