2016-09-16 2 views
1

У меня есть текстовый файл заголовка со всеми именами столбцов, которые используются в качестве шаблона. У меня есть куча типов файлов, которые открываются в блокноте с внутр из .cosцикл через каждый файл и добавление заголовка

То, что я делал до сих пор находится на рассмотрении заголовочный файл с содержимым всех .cos файлов с помощью следующего:

type *.cos >> header.txt 

Однако мне нужно знать, как я могу добавить файлы заголовков для каждого .cos индивидуально и иметь имя выходного в качестве входного имени файла .cos (возможно, в новый каталог), так что она не будет перезаписывать оригинальный

если кто-то может пожалуйста помочь.

Спасибо

+0

Итак, вы хотите, чтобы заголовки _append_ в '.cos' или вы хотите их в первой строке, потому что это заголовок? – Clijsters

+0

Да, я просто хотел бы добавить заголовок (который является только одной строкой с именами столбцов), который будет добавлен в файл .cos в верхней строке – abs786123

+0

Однако я хочу, чтобы это было сделано для каждого файла .cos, но не знаете, как чтобы сделать это для каждого файла .cos, который существует в папке. – abs786123

ответ

3

Чтобы установить источник/целевые каталоги, просто измените _SRCDIR/_DSTDIR переменные (не заключать их doublequotes ("), так что автоматически обрабатываются кодом)

Вот код:

@echo off 
setlocal enabledelayedexpansion 

set _SRCDIR=C:\Users\hyea\Desktop\Testing\Source 
set _DSTDIR=C:\Users\hyea\Desktop\Testing\Target 

for /f "delims=" %%f in ('dir /b /a-d "!_SRCDIR!\*.cos"') do (
    type "!_SRCDIR!\header.txt" > "!_DSTDIR!\%%f" 
    call :handle_file "!_SRCDIR!\%%f" "!_DSTDIR!\%%f" 
) 
goto :eof 

:handle_file 
    set _TMPVAR0=%~t1 
    setlocal disabledelayedexpansion 
    for /f "usebackq delims=" %%g in (`"findstr /n ^^ %1"`) do (
     echo %%g 
     set "_TMPVAR1=%%g" 
     setlocal enabledelayedexpansion 
     set "_TMPVAR1=!_TMPVAR1:*:=!" 
     echo.%~1 !_TMPVAR0: =-! !_TMPVAR1!>> %2 
     endlocal 
    ) 
    goto :eof 

@ EDIT0: Заменены пути выборки (которые я использовал) с фактическими путями на машине OP.

@ edit1: Модифицированный код, который он сбрасывает содержимое заголовка + каждый .cos содержимое в отдельный файл. Примечание: теперь _SRCDIR и _DSTDIRдолжно быть разным !!!

@ EDIT2: Добавлена ​​функциональность имя/дата, как это предусмотрено в комментарии (я заменил пространства символы в дате по дефис с, так что дата не будет считаться несколько столбцов, если ПРОСТРАНСТВО является разделителем столбцов). Чтение файла (handle_file) копируется (и адаптируется) от @jeb 's answer.

+1

Если вы используете Windows Vista или более позднюю версию, вы также можете использовать ['forfiles'] (https://technet.microsoft.com/en-US/library/cc753551 (v = ws.10) .aspx) – Clijsters

+0

Будет ли это сохранить исходное имя файла .cos в порядке лишения? – abs786123

+0

@ abs786123: Назначение - '_TARGETFILE', его можно установить на все (в настоящее время: _target.txt_). – CristiFati

Смежные вопросы