2010-08-07 73 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

相关问题