2014-01-24 32 views
1

我正在写一个Windows脚本来读取具有9列数据的txt文件 我想将此数据写入要加载到数据库的csv文件。windows批处理文件将空白字段更改为值

我发现一列有时是空白的,所以我想输入代码'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 
    ) 
    ) 

本管理的TXT文件阅读,然后写出来为CSV。 k列有时空,列n有时具有“”

我曾尝试的

set var=rdp 
    if %%k="" then set !k:=!var! 

其不工作的变化,所以有点难倒(goog后凌上网天)

电流输入

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 

电流输出

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 

所需的输出

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 
+0

请编辑您的问题,包括样本数据为特色的武侠线和期望的输出版本。 – Magoo

+0

在运行脚本之前和之后添加示例数据 – nyehus

+0

您的发布代码的单次运行无法生成您发布的当前输出。由于您不会更改循环内的值,所以'!idle!'的值必须在您的输出中保持不变。但是,输出中的第6列没有固定值。 – dbenham

回答

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 
) 
+0

嘿,嘿,嘿 - 一个字! :) – Magoo

+0

谢谢,但我不知道这实际上是在做什么 - 输出文件看起来与运行脚本之前一样。输出文件名与输入文件名相同? – nyehus

+0

@nyehus,只需在结束括号后面添加'>> temp.file'并检查新文件即可。完美的工作,我将删除我的答案。 – npocmaka

相关问题