Windows批处理文件将空白字段更改为值

nye*_*hus 1 windows csv batch-file

我正在编写一个Windows脚本来读取包含9列数据的txt文件,我希望将此数据写入csv文件以加载到数据库中.

我发现一列有时是空白的,所以我想输入代码'rdp',另一列主要是数字,但是由于某些值是'.' (大概指示值小于1.我想将这些值更改为'0'

我的代码

  for /F %%b in (c:\ts_users\newfiles_list.txt) do (
      for /F "tokens=1,2,3,4,5,6,7,8,9" %%i in (%%b) do (
        echo %%i,%%j,%%k,%%l,%%m,!idle!,%%o %%p,%%q >>%%~nb.csv
      )
    )
Run Code Online (Sandbox Code Playgroud)

这设法读入txt文件,然后将其写为csv.列k有时是空的,列n有时会有'.'

我尝试了各种变体

    set var=rdp
    if %%k="" then set !k:=!var!
Run Code Online (Sandbox Code Playgroud)

这不起作用,所以我有点难过(谷歌搜索互联网几天后)

当前输入

201401241611 USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME eu1ptsw002  
201401241611 julie.noble           rdp-tcp#9           3  Active         18  24/01/2014 14:24 eu1ptsw002  
201401241611 svc.perfmon18                             7  Disc            3  24/01/2014 14:15 eu1ptsw002  
201401241611 reto.hofstetter                          10  Disc           40  24/01/2014 10:57 eu1ptsw002  
201401241611 lester.valentin                          14  Disc         1:16  24/01/2014 11:53 eu1ptsw002  
201401241611 philippe.bachmann                        15  Disc            2  24/01/2014 12:45 eu1ptsw002  
201401241611 patrik.soderlund      rdp-tcp#2          21  Active         24  24/01/2014 07:42 eu1ptsw002  
Run Code Online (Sandbox Code Playgroud)

电流输出

201401241611,USERNAME,SESSIONNAME,ID,STATE,,TIME LOGON,TIME 
201401241611,julie.noble,rdp-tcp#9,3,Active,,24/01/2014 14:24,eu1ptsw002 
201401241611,svc.perfmon18,7,Disc,3,,14:15 eu1ptsw002, 
201401241611,reto.hofstetter,10,Disc,40,,10:57 eu1ptsw002, 
201401241611,lester.valentin,14,Disc,1:16,,11:53 eu1ptsw002, 
201401241611,philippe.bachmann,15,Disc,2,,12:45 eu1ptsw002, 
201401241611,patrik.soderlund,rdp-tcp#2,21,Active,,24/01/2014 07:42,eu1ptsw002 
Run Code Online (Sandbox Code Playgroud)

要求的输出

201401241611,USERNAME,SESSIONNAME,ID,STATE,,TIME LOGON,TIME 
201401241611,julie.noble,rdp-tcp#9,3,Active,18,24/01/2014 14:24,eu1ptsw002 
201401241611,svc.perfmon18,rdp,7,Disc,3,24/01/2014 14:15,eu1ptsw002 
201401241611,reto.hofstetter,rdp,10,Disc,40,24/01/2014 10:57,eu1ptsw002, 
201401241611,lester.valentin,rdp,14,Disc,1:16,24/01/2014 11:53,eu1ptsw002 
201401241611,philippe.bachmann,rdp,15,Disc,2,24/01/2014 12:45,eu1ptsw002 
201401241611,patrik.soderlund,rdp-tcp#2,21,Active,24,24/01/2014 07:42,eu1ptsw002 
Run Code Online (Sandbox Code Playgroud)

End*_*oro 5

@echo off &setlocal disableDelayedExpansion
for /f "delims=" %%a in (file) do (
    set "line=%%~a"
    setlocal enabledelayedexpansion
    set "line=!line:,.,=,0,!"
    set "line=!line:,,=,rdp,!"
    echo(!line!
    endlocal
)
Run Code Online (Sandbox Code Playgroud)