2014-12-02 86 views
0

在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批处理中找到表示潜在文件的字符串的基本名称?

+0

凡'%newest_file%'定义和设置? – 2014-12-02 18:23:22

回答

2

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

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

将返回non existent file

顺便说一句,你也可以结合那些代字号修饰符。 %~nxI将返回名称+分机没有路径。你不必做%~nI%~xI

2

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

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

你想要的是一个简单的命令FOR - 这将工作文件是否存在:

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

伟大的思想思考。 – rojo 2014-12-02 18:29:10

+0

谢谢。我希望我可以接受这两个:) – Dejell 2014-12-03 07:24:41

+0

@Dejel我会代表你的业障。 :) – rojo 2014-12-03 12:59:41