Прочитайте файл за строкой и проигнорируйте некоторые из них

Я пытаюсь написать пакетный файл, который анализирует файл для создания другого с его содержимым. Но в новом я проигнорирую каждую строку, которая начинается с -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 ответа

В одной строке есть несколько ошибок. Попробуй это:

IF NOT "!test:~0,8!"=="-Dremote" (echo %%A>>%iniFile%)
  1. Вы ошиблись (-Dremote имеет 8 символов, а не 7).
  2. Используйте echo вместо type.
  3. В неправильном положении есть место.
  4. Используется неверная переменная.

(Надеюсь, вы знаете, что вам придется использовать отложенное расширение (это не в вашем коде).)


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

(%iniFile% тест с фиктивным %iniFile%, конечно...)


Изменить 7-8 "-Dremote" имеет 8 символов. Добавьте SPACE после "-Dremote" перед круглой скобкой.

setlocal enabledelayedexpansion

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


Быстрое редактирование должно исправить это:

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

licensed under cc by-sa 3.0 with attribution.