En Powershell, ¿cómo puedo comprobar si un directorio está vacío?Prueba Powershell si la carpeta está vacía
Respuesta
Try esto ...
$directoryInfo = Get-ChildItem C:\temp | Measure-Object
$directoryInfo.count #Returns the count of all of the files in the directory
Si $directoryInfo.count -eq 0
, el directorio está vacío.
'gci' won ' t muestra los archivos ocultos de forma predeterminada, por lo que necesitará el parámetro '-force' para asegurarse de que el directorio esté realmente vacío. – SpellingD
¿Tenemos que encontrar cada archivo? Esto puede llevar mucho tiempo. – MuiBienCarlota
@SpellingD que fallará porque una carpeta está realmente vacío, pero al usar '-force' aparecerá el archivo de sistema oculto' desktop.ini' – mikew
Si no está interesado en los archivos ocultos o del sistema también puede utilizar Test-Path
para ver si existe un archivo en el directorio .\temp
puede utilizar:
Test-Path -Path .\temp\*
+1 para una manera tan clara de comprobación. Esto debería ser aceptado como respuesta. Por cierto, incluso puedes hacer 'Test-Path. \ Temp \ *' (sin '-Path'). – Neolisk
¿Alguien sabe si esto todavía recurre a través de todo el glob? ¿O se detiene una vez que encuentra * algo *? – kenny
No estoy seguro de entender su pregunta porque si existe un directorio dentro de la temperatura, la temperatura ya no se considera como vacía. – JPBlanc
filter Test-DirectoryEmpty {
[bool](Get-ChildItem $_\* -Force)
}
¿Por qué? !! ¡Gracias por explicar! –
Es para convertir el resultado a booleano. – Joey
Simplemente agregando a JPBlanc, si la ruta del directorio es $ DirPath, este código también funciona para rutas que incluyen caracteres de corchetes.
# Make square bracket non-wild card char with back ticks
$DirPathDirty = $DirPath.Replace('[', '`[')
$DirPathDirty = $DirPathDirty.Replace(']', '`]')
if (Test-Path -Path "$DirPathDirty\*") {
# Code for directory not empty
}
else {
# Code for empty directory
}
Una línea:
if((Get-ChildItem C:\temp | Measure-Object).Count -eq 0)
{
#Folder Empty
}
Para evitar la enumeración de cada archivo en c: \ Temp (que puede llevar mucho tiempo), podemos hacer algunas cosas como esta:
if((Get-ChildItem c:\temp\ -force | Select-Object -First 1 | Measure-Object).Count -eq 0)
{
# folder is empty
}
Esta es la solución más rápida, ya que no enumera todos los archivos y simplemente se detiene en la primera encontrada.Para verificar si los archivos están presentes en una carpeta, use '(Get-ChildItem -LiteralPath 'S: \ Test \' -File-Force | Select-Object -First 1 | Measure-Object) .Count -ne 0' en su lugar de 'Test-Path 'S: \ Test \ *' -PathType Leaf'. – DarkLite1
¡Es un desperdicio para obtener todos los archivos y directorios y contarlos solo para determinar si el directorio está vacío. Mucho mejor utilizar .NET EnumerateFileSystemInfos
$directory = Get-Item -Path "c:\temp"
if (!($directory.EnumerateFileSystemInfos() | select -First 1))
{
"empty"
}
#################################################
# Script to verify if any files exist in the Monitor Folder
# Author Vikas Sukhija
# Co-Authored Greg Rojas
# Date 6/23/16
#################################################
################Define Variables############
$email1 = "[email protected]"
$fromadd = "[email protected]"
$smtpserver ="mailrelay.conoso.com"
$date1 = get-date -Hour 1 -Minute 1 -Second 1
$date2 = get-date -Hour 2 -Minute 2 -Second 2
###############that needs folder monitoring############################
$directory = "C:\Monitor Folder"
$directoryInfo = Get-ChildItem $directory | Measure-Object
$directoryInfo.count
if($directoryInfo.Count -gt '0')
{
#SMTP Relay address
$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
#Mail sender
$msg.From = $fromadd
#mail recipient
$msg.To.Add($email1)
$msg.Subject = "WARNING : There are " + $directoryInfo.count + " file(s) on " + $env:computername + " in " + " $directory
$msg.Body = "On " + $env:computername + " files have been discovered in the " + $directory + " folder."
$smtp.Send($msg)
}
Else
{
Write-host "No files here" -foregroundcolor Green
}
Aunque ciertamente quiero alentarlo a publicar en StackOverflow, G, hay varias "mejores prácticas" que está ignorando, intencionalmente o no. (a) En general, no debe simplemente publicar el código sin explicación. (b) No debe volver a publicar la misma respuesta dada por otra persona (la suya se ha dado al menos dos veces si se desplaza por las respuestas aquí). (c) No debe incluir un montón de código no relacionado: el 90% de su código es irrelevante para la pregunta formulada. No voy a declinar, pero solo quería que estuvieras preparado en caso de que veas venir algunos votos atrasados. –
Lo siento y gracias Michael –
enfoque simple
if (-Not (Test-Path .\temp*)
{
#do your stuff here
}
puede quitar -Not
si quieres entrar en el 'si' cuando los archivos están presentes
Ejemplo de eliminar vacíos carpeta:
IF ((Get-ChildItem "$env:SystemDrive\test" | Measure-Object).Count -eq 0) {
remove-Item "$env:SystemDrive\test" -force
}
Escriba su respuesta en inglés, ya que [Stack Overflow es un sitio en inglés] (https://meta.stackexchange.com/q/13676). –
$contents = Get-ChildItem -Path "C:\New folder"
if($contents.length -eq "") #If the folder is empty, Get-ChileItem returns empty string
{
Remove-Item "C:\New folder"
echo "Empty folder. Deleted folder"
}
else{
echo "Folder not empty"
}
- 1. ¿Cómo comprobar rápidamente si la carpeta está vacía (.NET)?
- 2. Comprobando si la cadena está vacía
- 3. VBA Comprobar si la variable está vacía
- 4. Compruebe si la cadena está vacía
- 5. ¿Ejecutar INSERT si la tabla está vacía?
- 6. Evaluar si la lista está vacía JSTL
- 7. La carpeta Gen está vacía para el proyecto de Android
- 8. prueba Powershell si ejecutable en el camino
- 9. ¿Cómo identificar si la carpeta está abierta?
- 10. Powershell y parámetros de SQL. Si cadena vacía, pase DBNull
- 11. ¿Debería mostrar una cuadrícula si está vacía?
- 12. detectar si un objeto está vacía
- 13. Prueba si la conversión implícita está disponible
- 14. Agregar a la cadena si la cadena no está vacía
- 15. Compruebe si una matriz está vacía
- 16. Determinar si una cadena está "vacía"
- 17. Rails 3 - Si uso RSpec, ¿puedo eliminar la carpeta 'prueba'?
- 18. ¿Cómo comprobar si la matriz no está vacía?
- 19. Verificando si la respuesta AJAX está vacía y otros problemas
- 20. Compruebe si la base de datos está vacía
- 21. ¿Cómo comprobar si la matriz es nula o está vacía?
- 22. Con iOS, cómo comprobar si la URL está vacía
- 23. Comprueba si la pestaña actual está vacía en vim
- 24. PHP y MySQL de verificación si la tabla está vacía
- 25. Comprobar si la colección está vacía o no
- 26. Perl ¿cómo comprobar si la matriz todavía está vacía?
- 27. Compruebe si la matriz está vacía o nula
- 28. Eliminar la primera línea de archivo si está vacía
- 29. Linux: compruebe si la cola de mensajes está vacía
- 30. Determinar si la propiedad del objeto está vacía
Quien descendió no hizo ningún comentario sobre por qué. Voto ascendente. – SpellingD
@SpellingD: Ojalá fuera así todo el tiempo. :) – Neolisk