感谢这里的其他帖子,我知道如何让批处理文件将丢弃的文件解析为路径和文件名,如下所示:
@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