【发布时间】:2014-06-04 23:15:23
【问题描述】:
感谢这里的其他帖子,我知道如何让批处理文件将放置的文件解析为路径和文件名,如下所示:
@echo off
setlocal EnableDelayedExpansion
FOR %%a IN (%*) DO (
if exist %%a (
set DRVPATH="%%~dpa"
set FILEEXT="%%~nxa"
)
)
echo DRVPATH: %DRVPATH%
echo FILEEXT: %FILEEXT%
如果我将文件放在批处理文件上,这将非常有效。但是如果我将一个目录放到它上面,那么它会将目录的名称解释为文件名(我的 %FILEEXT% 变量)。
是否可以让批处理文件测试 %FILEEXT% 是否真的是一个目录?如果我在批处理文件上放置一个目录,我希望 %DRVPATH% 变量包含包含目录名称的完整路径,并且我希望 %FILEEXT% 变量为空。
我们将不胜感激地收到任何帮助解决此问题。
【问题讨论】:
-
Pushd 如果目录不存在则返回错误级别 9009,如果存在则返回 1,如果是文件则返回 0。请参阅 pushd /?、popd /? 和 if /? (如果错误级别 0,如果不是错误级别 1)。所以pushd,做你的ifs,然后popd。
标签: windows file batch-file directory