Я хочу, чтобы это было сделано для набора CSV-файлов в папке
Опять же, ваш командный файл поврежден разными способами.
Вам нужно научиться отлаживать свои собственные командные файлы:
Вместо того, чтобы тратить время на отладку вашего пакетного файла, я быстрее изменю пакетный файл из моего ответа на связанный вопрос, чтобы ответить на ваш новый вопрос.
Используйте следующий пакетный файл (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
Дальнейшее чтение
- Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
- call - вызов одной пакетной программы из другой или вызов подпрограммы.
- del - Удалить один или несколько файлов.
- for /f - Циклическая команда против результатов другой команды.
- for /r - перебирать файлы (подпапки Recurse).
- Гото - Прямой пакетную программу для перехода к меченой линии.
- параметры - аргумент командной строки (или параметр) - это любое значение, переданное в пакетный скрипт.
- ren - переименовать файл или файлы.
- type - отображать содержимое одного или нескольких текстовых файлов.