如何使用批处理脚本将值存储在变量中并将该变量作为新列加载到文件中?
上面的链接用于读取日期字段并将其写入 csv 文件中的所有记录。我希望对文件夹中的一组 csv 文件执行此操作。以下是该要求的脚本,我想知道以下脚本中的错误是什么
@echo off
setlocal if exist three.txt del three.txt
set cnt=1 rem get the date "01/12/15"
for %%i in (*.csv) do (
if cnt>=1 (
for /f "skip=5 tokens=1-10 usebackq delims=," %%a in (type "%%i") do (
set _date=%%d
goto :next
)
:next
rem add the date to the end of every line and output to "three.txt"
for /f "tokens=* usebackq" %%a in (type "%%i") do (
echo %%a,%_date%>> three.txt
)
)
set /a cnt+=1
)
endlocal
答案1
我希望对文件夹中的一组 csv 文件进行此操作
再次,您的批处理文件在很多方面都被损坏了。
您需要学习如何调试自己的批处理文件:
- 看调试批处理文件以获得一些提示。
- 要进行调试,您还需要检查所用命令的语法。请参阅Windows CMD 命令行的 AZ 索引。
与其花时间调试批处理文件,我还可以更快地从我的链接问题的答案回答您的新问题。
使用以下批处理文件(example.cmd):
@echo off
setlocal
if exist three.txt del three.txt
for /r %%i in (*.csv) do (
call :process_file %%i
)
goto :eof
:process_file
echo processing %1
for /f "skip=5 tokens=1-10 usebackq delims=," %%a in (`type %1`) do (
set _date=%%d
goto :next
)
:next
rem add the date to the end of every line and output to "three.txt"
for /f "tokens=* usebackq" %%a in (`type %1`) do (
echo %%a,%_date%>> three.txt
)
)
endlocal
如何将结果写入同一个 csv 文件而不是 three.txt?
使用以下批处理文件(example.cmd):
@echo off
setlocal
for /r %%i in (*.csv) do (
call :process_file %%i
)
goto :eof
:process_file
echo processing %1
for /f "skip=5 tokens=1-10 usebackq delims=," %%a in (`type %1`) do (
set _date=%%d
goto :next
)
:next
rem add the date to the end of every line and output to "three.txt"
for /f "tokens=* usebackq" %%a in (`type %1`) do (
echo %%a,%_date%>> three.txt
)
)
rem rename the file
del %~nx1
ren three.txt %~nx1
endlocal