Achei isso para obter o conteúdo de uma pasta e sua subpasta (somente arquivos) em um arquivo CSV:
dir -recurse | Where-Object { !$_.PSIsContainer } | Select FullName |
convertto-csv | out-file "test.csv"
No entanto, em vez do caminho completo, gostaria de obter o caminho relativo (relativo à raiz de onde executo o comando).
Alguém pode ajudar?
Obrigado!
Uma maneira de obter um arquivo CSV adequado é agrupar a saída do meu comentário:
Ou use uma propriedade calculada para remover o diretório inicial da
FullName
propriedade.Esta pergunta se traduz na impressão de que você é muito novo no PowerShell. Portanto, é vital que você se intensifique para limitar / evitar equívocos, maus hábitos, erros e sérias frustrações, que você certamente encontrará. Acesse YouTube/MSDN Channel9 e procure por PowerShell inicial, intermediário e avançado, bem como gerenciamento de sistema de arquivos PowerShell e gerenciamento de arquivos e pastas PowerShell.
O PowerShell, em muitos casos, tentará coagir as coisas, mas não tentará descobrir o que você deseja fazer. Você tem que dizer o que fazer. Bem, isso é verdade para qualquer linguagem de computador.
Seu problema aqui é o que você diz...
... bem, você pode estar em um caminho que está no nível X de profundidade da unidade raiz, então, agora você está em um filho, e a extrapolação é que você deseja isso apenas do filho. Aqui está o problema com esse processo de pensamento.
Salve isso em um arquivo de texto, então nunca teria o caminho da unidade e, como tal, quando você voltar a usá-lo, você terá que saber disso e colocá-lo de volta manualmente para usar os arquivos novamente.
Portanto, não tenho certeza de qual é o seu caso de uso, para esse esforço, mas logicamente ele voltará para mordê-lo.
Então, digamos, eu estou aqui:
Então nós executamos isso
Então, aqui nós apenas pegamos a localização atual...
Portanto, aqui apenas obtemos o caminho atual em que estamos e solicitamos apenas o nome do arquivo, não o nome completo
Se enviarmos isso para um CSV, você não tem ideia de qual unidade veio. Portanto, agora você precisa pesquisar todas as unidades em sua máquina para encontrá-las ou lembrar onde estava quando fez isso.
Indo uma criança para baixo, a mesma coisa. Claro, você entendeu isso, mas onde está realmente? Em seu sistema ou em alguma unidade de rede para a qual você mapeou.
Então nós executamos isso
E se você está dizendo, aqui, você não quer a raiz pai, então você remove isso.
No entanto, isso significa que você não apenas não sabe de qual unidade veio, mas também não sabe de qual raiz pai veio.
Então, apenas diga.
BTW, é uma prática recomendada usar o nome completo do cmdlet em scripts. Atalhos / pseudônimos são bons para coisas interativas. Claro, todos nós estamos acostumados a usar 'dir', mas a abreviação Get-ChildItem é 'gci', que é tão curto quanto fez, mas, você sabe.
Mas ei, os hábitos são realmente difíceis de quebrar. ;-} --- --- e as decisões prudentes são aquelas que funcionam para nós, independente do que os outros pensem. ;-}
Bem, aqueles que seguem você se posicionam. Portanto, ser um bom cidadão do PowerShell é realmente uma coisa boa.
BTW, se você fosse fazer isso em um script, também existe uma variável automática para esse tipo de coisa. Bem, obtendo o local onde o script foi executado e qualquer coisa associada a esse local.
Veja este artigo.
Adicione flexibilidade de script com caminhos de arquivo relativos