Проблема пакетного файла с амперсандом & во входной записи - PullRequest
0 голосов
/ 15 июля 2010

Я создал командный файл для обработки файла входных записей. Я вырезал большую часть кода, так что здесь проблема. Когда он читает третью запись с амперсандом, задание не записывает выходную запись, ЕСЛИ Я не ставлю двойные кавычки вокруг переменной %%H. Однако, когда я делаю это, он добавляет " к первому и последнему байту записи. Я хочу, чтобы в основном скопировать запись, и я делаю некоторые другие обработки.

Есть ли способ отделить "спереди и сзади" от добавляемого или есть способ для ECHO обработать амперсанд? Спасибо!

Входной файл имеет три записи:

HOW NOW BROWN COW
JACK AND JILL
JUST YOU & ME

Сценарий выглядит следующим образом:

set infile=D:\file.txt
set outfile=D:\outfile.txt

for /F "tokens=*" %%H in (%infile%) do (CALL :Loop "%%H")

rem for /F "tokens=*" %%H in (%infile%) do (CALL :Loop %%H)

GOTO :Loop_Exit

:Loop
    echo %* >> %outfile%
:Loop_Exit
pause

Ответы [ 2 ]

0 голосов
/ 17 июля 2010

Вот, пожалуйста, с помощью оператора% ~ удаляем кавычки:

@echo off

set infile=e:\file.txt
set outfile=e:\outfile.txt

for /F "tokens=*" %%H in (%infile%) do (
    call :Loop "%%H"
)

exit /b 0

:Loop
    for %%a in (%*) do echo %%~a >> %outfile%
exit /b 0

ВЫВОД:

E:\>foo2

E:\>type outfile.txt
HOW NOW BROWN COW
JACK AND JILL
JUST YOU & ME
0 голосов
/ 15 июля 2010

Вы можете использовать переменные подстроки , чтобы обрезать первый и последний символы, кавычки.

Таким образом, если VAR="Quoted String", то команда echo %VAR:~1,-1% не будет показывать кавычки.

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