我正在使用tshell连接到设备,我需要检查给定路径是文件还是目录。
我希望使用在设备上运行cmd命令的cmd-device函数,但似乎没有cmd命令来执行此操作。
是否有人可以使用标准cmd函数检查给定路径是指向目录还是文件?
答案 0 :(得分:1)
由于您在问题中标记了PowerShell,因此一个选项是检查Get-Item
cmdlet返回的对象类型。
(Get-Item C:\Windows) -is [System.IO.DirectoryInfo]
# Shorter version
(gi C:\Windows) -is [IO.DirectoryInfo]
答案 1 :(得分:0)
文件夹存在的常规测试是
if exist "x:\somewhere\" echo FOLDER FOUND
但是,在某些情况下(我知道novell netware重定向器的情况),当“x:\ somewhere”是文件或文件夹时,前一个条件将始终评估为true
一种替代方案可以是
@echo off
setlocal enableextensions
set "target=c:\windows"
set "what=NOT EXIST"
for %%a in ("%target%") do for /f "delims=r-" %%b in ("%%~aa%%~za"
) do if "%%b"=="d" ( set "what=FOLDER" ) else ( set "what=FILE" )
echo %what%
endlocal
检查文件/文件夹属性列表中是否存在初始d
。
列表中的每个属性都可以是字母(取决于属性)或破折号。
首先是d
用于目录,r
用于readonly。因此,第二个for
使用r-
作为分隔符,将可能的d
与其他属性分开。
如果文件没有设置任何属性,for
命令中的标记生成器将消除所有破折号,不将数据分配给可替换参数,并且不执行do
子句中的代码。为避免这种情况,%%~za
(元素的大小)将附加到字符串中,因此,如果文件/文件夹存在,将始终存在要处理的数据。如果它不存在,则表达式%%~aa%%~za
将被计算为空字符串,并且do子句中的代码将不会执行。