感谢此处的其他帖子,我知道如何让批处理文件将删除的文件解析为路径和文件名,如下所示:
@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%变量为空。
我们将非常感激地帮助您解决这个问题。
答案 0 :(得分:2)
试试这样:
@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
。
答案 1 :(得分:-1)
@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