在Windows XP批处理文件中,我抓取一个FTP目录列表并使用For /F
循环处理它。包含文件名的最后一个标记最后以一个回车(0D)作为变量中的最后一个字符。一旦检索,我尝试使用令牌中的值失败,因为回车导致我的If
语句换行到行首。从环境变量中删除回车 - XP命令行
@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
在处理0D回车符时,(if 'Stuff.zip'=='Stuff.zip
被覆盖。
如何摆脱环境变量末尾多余的0D?