Я создаю пакетный файл для обработки файла входных записей. Я вырезал большую часть кода, так что вот проблема. Когда он читает 3-ю запись, с амперсандом, задание не записывает выходную запись, UNLESS я помещаю двойные кавычки вокруг переменной %%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
@ricchaudoir: Фокус заключается в следующем: использовать кавычки вокруг переменной " %% H "в первую очередь. Затем, как только они вам больше не понадобятся, используйте %% ~ H. Это позволит обрезать кавычки (если они будут присутствовать) и ничего не сделает (при отсутствии кавычек). – 2010-08-15 09:32:04
Да, вы можете разбить кавычки с использованием символа тильды. если «echo% VAR%» возвращает «значение», тогда «echo% ~ VAR%» должно возвращать значение без кавычек. См. Справку, набрав 'cmd.exe /?'. – djangofan