在不存在的一个窗口中查找基本文件名

时间:2014-12-02 17:33:07

标签: windows batch-file cmd

在Windows中,如果我想在cmd中找到文件的基本名称,我可以这样做:

for /F %i in (%newest_file%) do set FILENAME=%~ni%~xi

但是,如果%newest_file%在Windows机器上确实不存在,例如

export/xiv0/webroot/Builds/client.is_11_3_1.win.RC1.4.140929.zip

我找不到文件。

在这种情况下我该怎么办?如何在Windows批处理中找到表示潜在文件的字符串的基本名称?

2 个答案:

答案 0 :(得分:2)

摆脱/f声明中的for开关。

for %I in ("non existent file.txt") do @echo %~nI

将返回non existent file

顺便说一句,您还可以组合这些波浪形修改器。 %~nxI将返回没有路径的名称+ ext。你不必做%~nI%~xI

答案 1 :(得分:2)

您使用的是错误的FOR命令!您的FOR /F命令将尝试打开文件并迭代每一行。所以它没有给出%newest_file%的基本名称,即使它存在。相反,它将文件中的每一行视为文件名,并给出其基本名称。

此外,您可以将%~ni%~xi合并到%~nxi

你想要的是一个简单的FOR命令 - 无论文件是否存在,这都会起作用:

for %F in ("%newest_file%") do set "FILENAME=%~nxF"