Windows批处理:解析路径/文件名,测试文件与目录



感谢这里的其他帖子,我知道如何让批处理文件将丢弃的文件解析为路径和文件名,如下所示:

@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%变量为空。

如有任何帮助,我们将不胜感激。

这样尝试:

@echo off
FOR %%a IN (%*) DO (
    if exist %%a (
        set DRVPATH="%%~fa"
        set FILEEXT=NIL
    ) else (
        if exist %%a (
            set DRVPATH="%%~pa"
            set FILEEXT="%%~nxa"
        )
    )
)
echo DRVPATH: %DRVPATH%
echo FILEEXT: %FILEEXT%
pause

如果存在具有您删除的名称的目录,则var %FILEEXT%设置为NIL

@Echo off
pushd %1 >nul 2>&1  
If errorlevel 0 if not errorlevel 1 Echo %~nx1 is a folder
If errorlevel 1 Echo %~nx1 is not a folder
Popd

相关内容

  • 没有找到相关文章

最新更新