В пакетном файле Windows XP я собираю список каталогов FTP и обрабатываю его с помощью цикла For /F
.Последний токен, содержащий имя файла, заканчивается возвратом каретки (0D) в качестве последнего символа в переменной.После получения моя попытка использовать значение в токене не удалась, потому что при возврате каретки мой оператор If
переносится в начало строки.
@echo off
for /f "tokens=1,4 delims=" %%A in ('ftp -s:dir.ftp') do (
if 'Stuff.zip'=='%%B' Set StuffDate=%%A
)
echo Stuff.zip was saved on %StuffDate%.
Содержимое, подлежащее обработке, выглядит следующим образом:
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
01-04-10 10:00AM 93882 Logo.jpg
02-05-10 11:01PM <DIR> PCODE
03-06-10 12:02PM 42333443 Saved stuff.zip
04-07-10 12:42PM 49343848 Stuff.zip
226 Transfer complete.
После проверки в шестнадцатеричном редакторе каждая строка заканчивается 0D 0D 0A, а не просто 0D 0A.Я не уверен, почему есть дополнительный 0D, но мне нужно удалить его, чтобы моя программа работала.
Во время выполнения, когда %% B равен Stuff.zip, If
должен выглядеть следующим образом:
( if 'Stuff.zip'=='Stuff.zip' Set ReleaseDate=04-07-10 )
Строка If
в конечном итоге выглядит следующим образом из-за CR:
' Set ReleaseDate=04-07-10 ) 'Stuff.zip
( if 'Stuff.zip'=='Stuff.zip
перезаписывается при обработке возврата каретки 0D.
Как избавиться от лишних 0D в конце переменной окружения?