逐行读取文件并忽略其中一些文件

时间:2014-07-01 13:54:40

标签: windows batch-file

我尝试编写一个批处理文件来解析文件以创建另一个文件及其内容。 但在新的一个中,我将忽略以-Dremote模式开头的每一行。

这是我的档案

-nl
fr_yy
-clean
-vmargs
-Dgma.environnement=staging
-Duser.timezone=CET
-Dgma.communication=remote
-Dgma.security.disable=false
-Xms256M
-Xmx768M
-XX:PermSize=64m
-XX:MaxPermSize=128m
-Dlogback.configurationFile=file:eclipse/conf-log/logback-error.xml
-Dshut.monitor.active=true
-Dshut.monitor.home=\\mynas05\GMData\Projets\RefonteUtilisateurs\Contrats\shut
-Dshut.applicationRuntimeEnv.systemPropertyKey=gma.environnement-nl
-Dremote_server_MessageWar=http://xxx.xxx.yy
-Dremote_port_MessageWar=40110
-Dremote_server_SinistreWar=http://xxx.xxx.yy
-Dremote_port_SinistreWar=40110
-Dremote_server_FacturationTiersWar=http://xxx.xxx.yy

这是代码

for /f "tokens=*" %%A in (%tempFile%) do (
    set test=%%A
    IF NOT "!test:~0,7!"=="-Dremote"( type %%i>>%iniFile%)
)

但是所有内容都复制在iniFile中......

4 个答案:

答案 0 :(得分:2)

findstr /v /b /l /c:"-Dremote" "%tempFile%" >"%iniFile%"

(首先用假%iniFile%进行测试......)

答案 1 :(得分:1)

一行中有一些错误。试试这个:

IF NOT "!test:~0,8!"=="-Dremote" (echo %%A>>%iniFile%)
  1. 您错误计算(-Dremote有8个字符,而不是7个字符。)
  2. 使用echo代替type
  3. 位置错误。
  4. 使用了错误的变量。
  5. (我希望您知道您必须使用延迟扩展(它不在您的代码中)。)

答案 2 :(得分:0)

快速编辑应修复它:

for /f "tokens=*" %%A in (%tempFile%) do (
    set test=%%A
    IF NOT "!test:~0,7!"=="-Dremote"( echo !test!>>%iniFile%)
)

答案 3 :(得分:0)

将7更改为8“-Dremote”有8个字符 在圆括号之前的“-Dremote”之后添加一个空格。

setlocal enabledelayedexpansion

for /f "tokens=*" %%A in (%tempFile%) do (
set test=%%A
IF NOT "!test:~0,8!"=="-Dremote" ( echo !test!>>%iniFile%)
)