设置空间的路径不起作用

时间:2014-05-22 00:29:09

标签: batch-file

请求帮助。

SET "prog=C:\Program Files (x86)\Common Files\Adobe"

SET "file=%prog%\Color\Profiles\%Value%"


FOR /f %%i IN ("%file%") DO (

ECHO filename=%%~ni
ECHO path=%%~fi
pause
)

结果:

filename =程序
路径= C:/程序

我需要path = C:\ Program Files(x86)\ Common Files \ Adob​​e \ Color \ Profiles \%Value% 和文件名%Value%no程序... THX。

2 个答案:

答案 0 :(得分:2)

您编写的FOR /F命令旨在处理用引号括起来的 A STRING 。这样,以下命令:

FOR /f %%i IN ("%file%") DO (

%%i变量中放置这样的字符串(“C:\ Program”)的第一个标记,%%~ni尝试从这样的字符串中提取文件名!

如果要提取文件的名称​​ ,则应使用带有NO / F选项的普通FOR命令:

FOR %%i IN ("%file%") DO (
   ECHO filename=%%~ni
   ECHO path=%%~fi
   pause
)

我的意思是,在这种情况下,您希望将%file%变量内容作为文件名处理,而不是作为字符串,所以你应该使用一个普通的FOR命令来处理文件(而不是FOR /F来处理字符串)。

答案 1 :(得分:1)

如果您将FOR行更改为此,您将获得更接近您想要的结果:

FOR /f "DELIMS=" %%i IN ("%file%") DO (

OR

FOR /f "TOKENS=*" %%i IN ("%file%") DO (

指定的TOKENS和DELIMS解析选项允许FOR接受从%file%到%i的整个字符串并忽略空格。资料来源:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/for.mspx?mfr=true