读取然后写分隔文件 - 批量cmd

时间:2014-09-18 07:04:47

标签: windows batch-file delimited-text

您好我有一个管道|分隔文件。 我需要反转那里的所有数字

该文件看起来像这样

Entity|Division|Channel|200|300|800

我需要阅读文件,创建一个带有反转数字的新文件

Entity|Division|Channel|-200|-300|-800

尝试使这项工作,但不完全确定如何修改我得到的文本。我需要:processToken程序的帮助。如何将标记输出到新文件并添加“ - ”并添加分隔符|

for /f "tokens=* delims= " %%f in (M:\GPAR\Dev\EQ\Upload_Files\eq_test.txt) do (
set line=%%f
call :processToken
)
goto :eof

:processToken
for /f "tokens=* delims=|" %%a in ("%line%") do (
)
if not "%line%" == "" goto :processToken
goto :eof

由于

2 个答案:

答案 0 :(得分:0)

@echo off
set "ent_file=c:\entity.txt"
break>"%tmp%\rev.txt"
for /f "usebackq tokens=1,2,3,4,5,6 delims=|" %%a in ("%ent_file%") do (

    echo %%a^|%%b^|%%c^|-%%d^|-%%e^|-%%f

)>>"%tmp%\rev.txt"

move /y "%tmp%\rev.txt" "%ent_file%" 
del /q /f "%tmp%\rev.txt"

如果您的文件只包含与您发布的文件类似的行,则应该有效。

编辑输出第6个令牌后的部分:

@echo off
set "ent_file=c:\entity.txt"
break>"%tmp%\rev.txt"
for /f "usebackq tokens=1,2,3,4,5,6,* delims=|" %%a in ("%ent_file%") do (

    echo %%a^|%%b^|%%c^|-%%d^|-%%e^|-%%f|%%g

)>>"%tmp%\rev.txt"

move /y "%tmp%\rev.txt" "%ent_file%" 
del /q /f "%tmp%\rev.txt"

答案 1 :(得分:0)

@echo off
setlocal EnableDelayedExpansion

set digits=0123456789

(for /F "delims=" %%f in (eq_test.txt) do (
   set "input=%%f"
   set "output="
   call :processToken
   set /P "=!output:~1!" < NUL
   echo/
)) > new_file.txt
goto :EOF

:processToken
   for /F "tokens=1* delims=|" %%a in ("%input%") do (
      set "token=%%a"
      set "input=%%b"
   )
   if "!digits:%token:~0,1%=!" neq "%digits%" set "token=-%token%"
   set "output=%output%|%token%"
   if defined input goto processToken
exit /B