Например, этот скрипт Борна выведет «свою папку», если предоставленная строка является папкой, или «ее файл», если это файл.
_test=/home/myuser
if [ -d $_test ]; then
echo "its a folder"
elif [ -f $_test ]; then
echo "its a file"
fi
/home/myuser
домашняя папка для моего пользователя acct. Эквивалент Windows будетC:\Users\myuser
powershell
mrjayviper
источник
источник
gci . | ? { $_.PSisContainer }
для каталогов илиgci . | ? { !$_.PSisContainer }
для файловОтветы:
Вы можете использовать командлет PowerShell
Test-Path
и его-PathType {Container|Leaf}
параметр 1, чтобы определить, является ли путь каталогом или файлом:Таким образом, аналогия с вашим скриптом bourne будет такой:
Некоторые вещи об этом скрипте:
if(Test-Path -Path $ToTest -PathType Container){}
является сокращенной версиейif((Test-Path -Path $ToTest -PathType Container) -eq $true){}
- поэтому вы также можете проверить$false
(например,"This path is NOT a directory!"
$ToTest
означает «если пользовательский ввод не указан, используйте указанное fallback-значение ("C:\Users\myuser\FooDir"
)» . Поэтому.\script.ps1 "D:\MyPath
будет оценивать"D:\MyPath"
, в то время как.\script.ps1
будет оценивать запасное значение (например"C:\Users\myuser\FooDir"
).[string]$ToTest = Read-Host "Please specify a path to check"
если вы хотите иметь консольную подсказку для пути в качестве запасного варианта ...[Parameter(Mandatory=$true)][string]$ToTest
Все вышеперечисленное было протестировано с PowerShell версий от 2 до 5.1.
1
Get-Help Test-Path -detailed
покажет ту же информацию в автономном режиме.2
Get-Help about_functions_advanced_parameters
покажет ту же информацию в автономном режиме.источник
Как проверить, является ли строка папкой или файлом в powershell?
Источник PowerTip: использование PowerShell для определения пути к файлу или папке
источник