O primeiro script recebe a entrada do usuário de um diretório: ex:D:\Test1 D:\Test2
$Dir1=Read-Host -Prompt "Enter first location" |Out-file -FilePath .\directories.csv -Append
$Dir2=Read-Host -Prompt "Enter 2nd location (or leave blank)" |Out-file -FilePath .\directories.csv -Append
No segundo script eu tenho:
$Dir=Import-Csv 'D:\directories.csv'
$Dir[0]
Mas não imprime corretamente (imprime todos os diretórios em vez de apenas um) preciso atribuir cada diretório a uma variável diferente
PS Total iniciante aqui, então por favor explique brevemente
Resposta atualizada
Com base nos comentários, o que o autor quer alcançar é obter os diretórios selecionados em formato string e devido às funções que selecionam, os diretórios acabam em formato de tabela e assim complicam o problema. Aqui estão dois scripts que
FolderBrowserDialog
e salvá-los em um arquivo de texto.Roteiro 1
Roteiro 2
Resposta antiga
Import-Csv está assumindo que a primeira linha do seu arquivo csv é um cabeçalho, portanto, neste caso
D:\Test1
, assume-se que é o cabeçalho. Como seu arquivo está sem o cabeçalho, você pode inserir o cabeçalho manualmente para evitar esse problema.$Dir=Import-Csv 'D:\directories.csv' -Header "DummyHeader"
Agora
$Dir[0]
será impresso corretamente (O cabeçalho sempre será mostrado aqui).Aqui está minha opinião:
Solicita caminhos em loop e coleta em array até que não haja entrada:
Salve todos os elementos, exceto a string vazia, em um arquivo de texto:
Com um único elemento por linha e sem linha de cabeçalho, não há necessidade de um .csv
Use
Get-Content
para recuperar o arquivo como uma matriz de caminhosEntão você pode obter uma contagem de caminhos e acessar individualmente assim:
Exemplo:
Editar:
Este código usa o
BrowseForFolder
método: