2014-12-02 47 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