Como classificar números decimais certos

1

Eu tenho uma pasta que contém subpastas para cada versão do aplicativo (número decimal). Agora, tenho um script powershell para comparação de versões. O problema é que não posso classificá-lo como esperado. Como posso resolvê-lo em um código de linha, porque estou fazendo isso a partir do script em lote.

Usando Get-ChildItem para ver o conteúdo da pasta

Classificação atual (executando em batch script:

powershell -Command "& {Get-ChildItem "\folder_dir\" -Name | sort-object -descending }

Opções para solução:

  1. Classifique Get-ChildItem por data e, de alguma forma, imprima apenas os nomes das pastas (sem o título "Nome", como na saída regular)
  2. Classifique Get-ChildItem pelo nome e, de alguma forma, classifique-o (o problema é com números decimais)

Por exemplo (descendente ou ascendente, não importa. A ordem é o que importa):

Folder content:
1.0
1.111
1.11
2.2
1.18
2.5
2.44

Current output:
2.5 <-- wrong place
2.44
2.2
1.18 <-- wrong place
1.111
1.11
1.0

Expected sort:
1.0
1.11
1.18
1.111
2.2
2.5
2.44
    
por igor 07.11.2017 / 12:58

2 respostas

1

Crédito para a solução @Seth

De link

Comando final: powershell -Command "& {Get-ChildItem "\nas\shared\Public\Igor\gscript\version" -Name | sort-object { [regex]::Replace($_, '\d+', { $args[0].Value.PadLeft(20) }) }}

    
por 07.11.2017 / 14:47
0

Seu script está funcionando perfeitamente.

Você classifica em ordem decrescente, e é exatamente isso que faz.

Observe que o número à esquerda do arquivo. também vai de alto para baixo.

Assim, seu script precisaria ser o seguinte:

powershell -Command "& {Get-ChildItem "\nas\shared\Public\Igor\gscript\version" 
   -Name | sort-object }

Sort-Object classifica em ordem crescente por padrão, a menos que -descending seja usado.

    
por 07.11.2017 / 13:05