如何使用单独的Windows批处理文件与FOR(令牌,delims)? [关闭]

问题描述 投票:-2回答:2

我想制作一个性能监控批处理程序。我自己插入VB。但问题是,我不能制作一个插入文件

  1. 转储性能监控文件
  2. 将文件处理为可插入数据
  3. 通过FTP发送到服务器
  4. 插入数据

除了第二,我做到了

有人会帮助我们如何将数据分成我想要的数据吗?

转储文件是这样的

------------------------------------------------
**# 20180917_CAFENOIR_PERF.cvs**
------------------------------------------------
"(PDH-CSV 4.0) (","\\CAFENOIR\Processor(_Total)\% Processor time","\\CAFENOIR\Memory\Available KBytes","\\CAFENOIR\LogicalDisk(C:)\% Free Space","\\CAFENOIR\LogicalDisk(D:)\% Free Space","\\CAFENOIR\LogicalDisk(E:)\% Free Space"
"09/17/2018 12:32:11.439"," ","2389340","73.031078258802481","99.758165860552879","92.077869960114995"
"09/17/2018 12:32:12.474","13.17071949707611","2393976","73.031078258802481","99.758165860552879","92.077869960114995"

我想把这个文件做成这样的

------------------------------------------------
**# 20180917_12_CAFENOIR_perfmon.imp**
------------------------------------------------
CAFENOIR
"13.17071949707611"
"2393976"
"73.031078258802481"
"99.758165860552879"
"92.077869960114995"
"09/17/2018 12:32:12.474"

我尝试使用这样的脚本,但它只是输出了计算机名称

CAFENOIR

我希望有人能给出一个线索

添加了代码(抱歉,我忘了)

for /F "tokens=1-6 skip=2 delims=," %%a IN ('type *.cvs') do (@echo %computername% %%b% %%c% %%d% %%e% %%f% %%a% > %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%computername%_perfmon.imp

)

windows batch-file for-loop token
2个回答
1
投票

看看你的答案,它有很多问题。你可以运行一个循环,并且没有%%a%这样的东西:

@echo off
for /F "tokens=1-6 skip=2 delims=," %%a IN ('type *.cvs') do (
    set "vDT=%%a"
    set "vCPU=%%b"
    set "vMEM=%%c" 
    set "vCfree=%%d"
    set "vDfree=%%e"
    set "vEfree=%%f"
echo %computername% %vCPU% %vMEM% %vCfree% %vDfree% %vEfree% %vDT% > %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%computername%_perfmon.imp
)

更好的是,您甚至不需要设置变量就像预先定义它们一样:

@echo off
for /F "tokens=1-6 skip=2 delims=," %%a IN ('type *.cvs') do (
echo %computername% %%b %%c %%d %%e %%f %%a > %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%computername%_perfmon.imp
)

-1
投票

这很有趣。我为此奋斗了一个星期,但在我发布问题之后,我就是自己做的

我希望它会帮助那些分开A文件参数的人。

@SET vCPU   = none
@SET vMEM   = none
@SET vCfree = none
@SET vDfree = none
@SET vEfree = none
@SET vDT    = none
FOR /F "tokens=1 skip=2 delims=," %%a IN ('type *.cvs') DO @SET vDT=%%a%
FOR /F "tokens=2 skip=2 delims=," %%a IN ('type *.cvs') DO @SET vCPU=%%a%
FOR /F "tokens=3 skip=2 delims=," %%a IN ('type *.cvs') DO @SET vMEM=%%a%
FOR /F "tokens=4 skip=2 delims=," %%a IN ('type *.cvs') DO @SET vCfree=%%a%
FOR /F "tokens=5 skip=2 delims=," %%a IN ('type *.cvs') DO @SET vDfree=%%a%
FOR /F "tokens=6 skip=2 delims=," %%a IN ('type *.cvs') DO @SET vEfree=%%a%
@echo %vCPU%
@echo %vMEM%
@echo %vCfree%
@echo %vDfree%
@echo %vEfree%
@echo %vDT%
@echo %computername% %vCPU% %vMEM% %vCfree% %vDfree% %vEfree% %vDT% > %date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%_%computername%_perfmon.imp**
© www.soinside.com 2019 - 2024. All rights reserved.