Пакетный скрипт - игнорировать хеш при чтении строк из файла - PullRequest
2 голосов
/ 06 августа 2011

Я хотел бы установить переменные из пар имя-значение в свойствах.В файле свойств есть # для комментариев

==== пример входного файла =====

#This is a comment
### Another comment
appNames=HelloWorldApp
targetServer=serverABC

DEV.key1=value1
TEST.key2=value2

========= У меня 2 вопроса

1)

C:\temp\dos>for /f "delims=" %i in (test.properties) do @set %i
Environment variable #This is a not defined
Environment variable ### Another not defined

Переменные установлены, но я бы хотел, чтобы комментарии игнорировались.Я хотел бы сделать это с помощью одной строки кода, но вместо этого получить.

for /f "delims=" %i in (test.properties) do @echo %i | find "#">nul || @set %i
find: unable to access "#": The system cannot find the file specified.
The process tried to write to a nonexistent pipe.
Environment variable #This is a not defined
find: unable to access "#": The system cannot find the file specified.
The process tried to write to a nonexistent pipe.

2) Я хотел бы, чтобы этот файл свойств был передан в качестве аргумента пакетному сценарию. Содержание теста.bat файл

set propFilePathAndName=%1
for /f "delims=" %i in (%propFilePathAndName%) do echo %i

output

C:\temp\dos>set propFilePathAndName=/temp/dos/test.properties
propFilePathAndNamei was unexpected at this time.    

Если я запускаю содержимое этого файла по одной строке за раз, это работает.Что я делаю неправильно?Заранее спасибо

1 Ответ

6 голосов
/ 06 августа 2011

Чтобы игнорировать строки, начинающиеся с хэша, вы можете использовать параметр eol цикла for.
for /f "eol=# delims=" %i in (test.properties) do @set %i

Вторая проблема заключается в удвоении процента внутри пакетного файла.

set propFilePathAndName=%1
for /f "delims=" %%i in (%propFilePathAndName%) do echo %%i

Это вызвано синтаксическим анализатором, существуют разные правила для командной строки и командных файлов.

CMD линия
for %a in (xyz) do echo %a

пакетный файл
for %%a in (xyz) do echo %%a

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...