解析多个文本文件与备用文件名,找到总和,然后编译输出与批处理文件(Parsing multiple

2019-10-30 12:53发布

编辑与用户的建议:

我有我的数千台服务器上运行,从日志编译关键字和输出有多少次出现在文本文件中的脚本。 输出看起来像这样为每个单独的服务器:

---------- C:\TEMP\TEXT.001: 0
---------- C:\TEMP\TEXT.002: 0
---------- C:\TEMP\TEXT.003: 2
---------- C:\TEMP\TEXT.004: 0
---------- C:\TEMP\TEXT.005: 1

冒号后的最后一个数字的次数的关键字出现在日志文件中。 所以,我有从上千台服务器,我然后利用XCOPY移动到我的盒子放到同一个文件夹的结果文件。

将文件移动到我的盒子之后,我有一个脚本,冒号后删除所有数据,然后找到的总和。 它的工作原理,在一定程度上,但它仅适用于单个文件:


    @Echo off 
    set "Total=0" 
    for /f "tokens=3 delims=:" %%a in (Server1_Count.txt) do Set /a "Total+=%%a" 
    (echo  %%a >> Server1_CountCompleted.txt Total is %Total%)

我有我挣扎了两个问题:

  1. 我需要创建一个循环,它会击中* __ Count.txt结尾的文件夹内的所有文件,然后创建的* _CountCompleted.txt所有文件与不同的主机名开始一个新的输出,我一直在尝试使用通配符无济于事。 (即:server1_Count.txt,server2_count.txt然后应该生成server1_CountCompleted.txt,server2_CountCompleted)
  2. 我此脚本的电流输出只能定向到一个文件,并生成一个新文件,看起来象下面这样:

%的总是34

有没有一种方法来添加主机名(开头的文件名前缀),以显示在新生成的文件,一个例子:

server1的合计为34

Answer 1:

当只使用set /a没有呼叫或延迟扩展neccessary。

提示:使用文件夹/文件可能包含空格的名称打交道时更好地利用结肠delims。

:: Q:\Test\2019\04\01\SO_55461444.cmd
@Echo off
set "Total=0"
for /f "tokens=3 delims=:" %%a in (FILE.txt) do Set /a "Total+=%%a"
echo Total is %Total%
pause

示例输出(德文场所):

> SO_55461444.cmd
Total is 3
Drücken Sie eine beliebige Taste . . .

新变种迭代文件*_count.txt指定文件夹中:

:: Q:\Test\2019\04\01\SO_55461444.cmd
@Echo off & SetLocal
:: clear/initialize env vars
set "Total=0"
for /F "delims==" %%A in ('set FileTotal[ 2^>nul') Do Set "%%A="

Pushd "X:\path\Folder" || (Echo couldn't change to folder &Pause&exit /b 1)

Echo Processing folder %CD%
Echo:
:: iterate files in folder
For %%F in (*_count.txt) Do (
    for /f "tokens=3 delims=:" %%A in (
        'Findstr "^-------" "%%F"'
    ) Do Set /A "FileTotal[%%~nF]+=%%A,Total+=%%A"
)

Set FileTotal[
Echo ===================
echo GrandTotal is %Total%
popd
pause

输出样本:

> Q:\Test\2019\04\01\SO_55461444.cmd
Processing folder Q:\Test\2019\04\02

FileTotal[server1_count]=3
FileTotal[server2_count]=15
===================
GrandTotal is 18
Drücken Sie eine beliebige Taste . . .


文章来源: Parsing multiple text files with alternate file names, finding sum, and then compiling output with Batch file