我有一个标题文本文件,其中所有列名都用作模板。 我有一堆文件类型在记事本中以.cos
的分机打开到目前为止,我一直在做的是使用以下内容覆盖所有.cos文件内容的头文件:
type *.cos >> header.txt
但是,我需要知道如何将头文件单独附加到每个.cos并将输出名称作为.cos文件的输入名称(可能放入新目录),因此它不会覆盖原始
如果有人可以请求帮助。
谢谢
@echo off
setlocal enabledelayedexpansion
set C:\Users\hyea\Desktop\Testing\Source=src
set C:\Users\hyea\Desktop\Testing\Target=dst
set C:\Users\hyea\Desktop\Testing\Target="%_DSTDIR%\target.txt"
type "%C:\Users\hyea\Desktop\Testing\Source%\header.txt"
> %C:\Users\hyea\Desktop\Testing\Target%
for /f "tokens=*" %%f in ('dir /b /a-d
"!C:\Users\hyea\Desktop\Testing\Source!\*.cos"') do (
type "!C:\Users\hyea\Desktop\Testing\Source!\%%f" >>
%C:\Users\hyea\Desktop\Testing\Target%
)
答案 0 :(得分:3)
要设置源/目标目录,只需更改_SRCDIR
/ _DSTDIR
变量(不要将它们括在双引号(“)中,因为代码会自动处理)
以下是代码:
@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 :在评论中添加了名称/日期功能(我用 HYPHEN 替换了日期中的 SPACE 字符,所以如果 SPACE 是列分隔符,则日期不会计为多列。从@jeb 's answer复制(并调整)文件读取(handle_file
)。