Расширение переменной FOR имеет модификаторы, которые обрабатывают значение как спецификацию файла и разбивают его на компоненты
- %% ~ dR = диск:
- %% ~ pR = \ path \
- %% ~ nR = baseName
- %% ~ xR = .extension
Эти модификаторы также нормализуют значение в канонической (стандартной) форме.
Windows не позволяет имени файла или папки заканчиваться пробелом или точкой, поэтому модификаторы будут обрезать конечные точки и пробелы из значения. Вы можете использовать этот факт, чтобы обрезать завершающие пробелы!
FOR /F "delims=" %%R IN (C:\Test01.txt) DO IF Ready == %%~nxR COPY /y C:\Test01.txt
Это будет работать правильно, только если значение не содержит :
\
или /
. Также помните, что это также урежет конечные точки. Таким образом, строка типа c:\my path\Ready.
также станет Ready
, если вы используете %%~nxR
.
Существует еще более простое и надежное решение, которое может работать в вашем случае. Все ваши строки состоят из одного слова (плюс завершающие пробелы). Если вы можете положиться на этот факт, то можете просто удалить опцию DELIMS и позволить FOR обрезать пробелы для вас (по умолчанию DELIMS - это пробел и табуляция).
FOR /F %%R in (C:\Test01.txt) DO IF Ready == %%R COPY /y C:\Test01.txt
Если вы беспокоитесь, что какое-то слово может следовать за READY, и в этом случае вы не хотите копировать, тогда вы можете использовать
FOR /F %%R* in (C:\Test01.txt) DO IF Ready == %%R IF "%%S" == "" COPY /y C:\Test01.txt