Como concatenar dois valores fornecidos com duas chaves em diferentes HashTables?

0

Estou tentando concatenar dois valores fornecidos com duas chaves em HashTables distintos.

Código

$caminho = @{
    Aplicacao = "C:\Users\marconi.barroso\Desktop\APP";
    jdk = "C:\Program Files\java\jdk1.8.0_172\bin"
}

$arquivo = @{
    log = "log.txt";
    apk = "lojasrede.apk"
}


if(Test-Path $caminho.Aplicacao\$arquivo.log) {
    Remove-Item $caminho.Aplicacao\$arquivo.log
}

Erro:

Test-Path: Can not associate argument with parameter 'Path' because it is null. In the line: 1 character: 11

    
por cura 15.08.2018 / 00:53

3 respostas

1

Adicione simplesmente + "\" + entre as duas variáveis do array e coloque entre parênteses, por exemplo. %código%. O ($caminho.Aplicacao + "\" + $arquivo.log) [sinal de mais] concatenará a string + [barra invertida] incluída entre \ [aspas duplas]. Então apenas coloque isso ( "" ) diretamente entre as duas variáveis e sua lógica permanece praticamente a mesma e funciona como esperado.

PowerShell

$caminho = @{
    Aplicacao = "C:\Users\marconi.barroso\Desktop\APP";
    jdk = "C:\Program Files\java\jdk1.8.0_172\bin"
}

$arquivo = @{
    log = "log.txt";
    apk = "lojasrede.apk"
}


if(Test-Path ($caminho.Aplicacao + "\" + $arquivo.log)) {
    Remove-Item ($caminho.Aplicacao + "\" + $arquivo.log)
}

Mais recursos

por 15.08.2018 / 01:38
1

Existem várias maneiras,

if(Test-Path (Join-Path $caminho.Aplicacao $arquivo.log)) {
    Remove-Item (Join-Path $caminho.Aplicacao $arquivo.log)}
}

Eu usaria primeiro o Join-Path e armazenaria o caminho em uma variável, pois ele seria usado por pelo menos duas vezes.

    
por 15.08.2018 / 01:12
1

I am trying to concatenate two values provided with two keys in distinct HashTables.

Você está perdendo o parâmetro -Path necessário. Você também não estava concatenando os dois caminhos, o que pode ser feito com Join-Path , resultando no que você estava tentando fazer. O parâmetro -Path ausente no Test-Path era apenas metade do problema.

Test-Path (Join-Path -Path $caminho.jdk -ChildPath $arquivo.log)

O comando acima retornou corretamente True para mim.

Test-Path

Join-Path

    
por 15.08.2018 / 01:07

Tags