¿Qué tal algo tan simple como:
PS> gci . -r foo.txt
Este utiliza implícitamente el parámetro -Filter (por posición) especificando foo.txt como el filtro. También podría especificar * .txt o foo? .txt. El problema con StartsWith es que, mientras maneja la comparación insensible a mayúsculas y minúsculas, todavía existe el problema de que/y \ son separadores de ruta válidos en PowerShell.
Suponiendo que el archivo puede no existir y ambos directorio de archivos $ y $ son las rutas absolutas, puede hacerlo de la manera "PowerShell":
(Split-Path $file -Parent) -replace '/','\' -eq (Get-Item $directory).FullName
Pero eso no es muy grande ya que todavía tiene que canónica la ruta/-> \ pero al menos la comparación de cadena PowerShell no distingue entre mayúsculas y minúsculas. Otra opción es usar IO.Path para canonicalizar la ruta, p.:
[io.path]::GetDirectoryName($file) -eq [io.path]::GetFullPath($directory)
Un problema con esto es que GetFullPath también hará una ruta relativa una ruta absoluta basada en directorio actual del proceso que más veces que no, es no lo mismo que directorio actual de PowerShell. Así que solo asegúrese de que $ directorio sea una ruta absoluta, incluso si tiene que especificarlo como "$ pwd \ $ directory".
No estoy interesado en si el archivo existe, pero si su ruta está bajo un directorio. Además, su formateo no está claro. –
Sí, el formato del código aquí no funciona bien para PS. Este no es un archivo completo de PS1, solo material escrito en la línea de PS cmd. Su pregunta fue "¿Cómo verifico si un archivo está bajo un directorio determinado ...?" Parece que la otra respuesta también está buscando un archivo, como lo pidió. Veo tu edición, pero ¿cómo puede un archivo tener una ruta si ni siquiera existe? – Bratch
Creo que lo entiendo ahora, tiene esta ruta de archivo almacenada en alguna parte, y desea ver si la parte de la ruta existe debajo de alguna otra ruta especificada? – Bratch