2010-08-07 76 views
1

例如:我有一個文件:FILENAME.EXT,並希望在沒有.EXT文件的情況下提取文件名。我希望能夠使用無擴展名文件名作爲只接受文件名而不包含其擴展名的命令。我有一個名爲BCHECK的實用程序,它接受一個沒有擴展名的文件名作爲參數。使用BCHECK *。不起作用,因爲所有文件都有.DAT或.IDX擴展名。這些文件不斷被重命名,因此我需要爲BCHECK提供新文件名,而無需手動輸入它們。如何在命令行解釋器和批處理文件中抑制文件擴展名?

+0

刪除「unix」標籤,因爲這似乎只是關於DOS/Windows批處理文件。 – David 2010-08-07 03:43:21

+0

@David:我的應用程序在UNIX和DOS下運行,所以我需要知道兩者。 – 2010-08-07 03:46:40

+0

Unix上的'basename'會爲你工作嗎? – Gabe 2010-08-07 04:03:18

回答

1

對於DOS批處理文件,您可以查看參數here。例如,以下命令顯示0參數的擴展名,即批處理文件的名稱。

echo %~n0 

UPDATE:
下面是可以添加到一個批處理文件的例子。

FOR %%f IN (*.dat) DO bcheck -y %%~nf 

此命令將與一個.dat擴展在當前目錄下的每個文件運行bcheck -y BASENAME。該命令是一個for循環,其中包含一個參數%%f%%f參數包含文件的全名。對於每個匹配*.dat的文件,它將在DO關鍵字後面運行該命令。 %%~nf指示使用參數(%%f)中的基準名稱(~n)。

+0

@bobs:這在DOS 6.22中不起作用。我在C:\ DBFILES目錄中有大約30個帶有.DAT擴展名的文件。我有一個名爲BCHECK.EXE的實用程序,它需要將其作爲其參數30的基本名稱。 DAT文件,例如:'bcheck -y BASENAME',那麼你能給我提供一個工作的例子嗎? – 2010-08-07 12:49:09

+0

@Frank:我在答案中增加了更多信息。 – bobs 2010-08-07 15:44:47

+0

@bobs:不,在批處理腳本中不起作用,bcheck迴應:File%〜nf找不到。請記住,這是純DOS 6.22而不是Windows cmd.exe命令解釋器。 – 2010-08-07 19:39:40

2

這個的Unix命令是basename

相關問題