我想在日志文件的每一行的开头插入文件名,但是在某些行的开头有;
,我想保留它。
我成功插入了文件名,但分号;
消失了。
例如,我在一开始就有这个:
1254778;FGT_1;1447;ggft.... ;YH_4;14788;hhth;warning.... 774895;HG_5;4778..... ;TR_8;7885;.....
使用我的代码后,我得到了:
FILENAME 1254778;FGT_1;1447;ggft.... FILENAME YH_4;14788;hhth;warning.... FILENAME 774895;HG_5;4778..... FILENAME TR_8;7885;.....
这是我的代码:
@echo off
setLocal EnableDelayedExpansion
for /f "tokens=* delims=;" %%a in (file1.log) do (
echo FILENAME %%a >>FILE1_.txt
)
对我来说,我想拥有它:
FILENAME 1254778;FGT_1;1447;ggft.... FILENAME ;YH_4;14788;hhth;warning.... FILENAME 774895;HG_5;4778..... FILENAME ;TR_8;7885;.....
答案 0 :(得分:1)
可以尝试一下:
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('type "file1.log" ^| find /v /n "" ^& break ^> "FILE1_.txt"') do (
set "str=%%a"
call set "str=%%str:*]=%%"
echo FILENAME !str!>> FILE1_.txt
)
我们实际上只是添加行号,以便我们可以精确地复制行,然后在打印到新文件之前简单地删除行号。
答案 1 :(得分:1)
将for /F
的选项字符串从"tokens=* delims=;"
更改为delims^=^ eol^=
(是,不带引号),以便同时禁用定界符和行尾字符:
@echo off
setLocal EnableDelayedExpansion
for /F usebackq^ delims^=^ eol^= %%a in ("file1.log") do (
echo FILENAME %%a>>"FILE1_.txt"
)
答案 2 :(得分:0)
如果要继续使用PowerShell,则可以采用另一种方法。
@ECHO OFF
powershell -NoLogo -NoProfile -Command ^
"Get-Content -Path '.\file1.log' | "^
"ForEach-Object { '{0} {1}' -f @('FILENAME', $_) } | "^
"Out-File -FilePath '.\FILE1.txt' -Encoding ascii"
TYPE .\FILE1.txt