Existe uma maneira de abrir todos os arquivos que correspondem a uma determinada estrutura de diretório no Windows DOS / Powershell

0

Eu estou em um computador windows (server 2008) que serve sites. Os sites são organizados em pastas:

c:/Websites/
           /www.mysite.com
           /www.mysite.co.uk
           /www.mysite.com.au
           /beta.mysite.com
           /beta.mysite.co.uk
           /www.mysite.com.au

Cada uma dessas pastas compartilha conteúdo quase idêntico, além de arquivos de configuração como o web.config.

Eu quero abrir o mesmo arquivo em todos esses sites para realizar algumas edições.

Existe um comando Dos / Powershell que eu posso escrever para abrir todos os arquivos que compartilham a mesma estrutura de diretório, nome de arquivo e extensão, por exemplo, abrindo os arquivos de configuração que estão dentro de diretórios específicos da pasta de sites raiz?

Posso abri-los em um editor de texto específico?

    
por digiguru 31.07.2013 / 10:22

4 respostas

1

Use este script do powershell:

$editorPath = "C:\Program Files (x86)\Notepad++\notepad++.exe"
$websites = Get-ChildItem -Path "C:/Websites" | Where { $_.PSIsContainer }
foreach ($website in $websites)
{
    $webConfigPath = $website.FullName + "\web.config"
    if (Test-Path -Path $webConfigPath)
    {
        Start-Process -FilePath $editorPath -ArgumentList $webConfigPath
    }
}

Ele abrirá todos os arquivos web.config em todas as pastas de C:/Websites com o notepad ++.

Você também pode usar AppCmd.exe para obter os sites. Isso só irá obter sites em vez de todas as pastas.

    
por 31.07.2013 / 10:57
0

Esta resposta foi baseada na pergunta original (Como a pergunta é atualizada, essa resposta não é 100% relevante, mas ainda pode ser útil no futuro, então não a excluirei)

Você pode usar o comando start em um arquivo em lotes. Como suponho que você já saiba onde estão os arquivos de configuração, você poderá escrever uma lista e depois executá-la a partir de um arquivo de lote.

START c:/Websites/www.mysite.com/web.config  
START c:/Websites/www.mysite.co.uk/web.config  
START c:/Websites/www.mysite.au/web.config

Você pode precisar associar o arquivo de configuração para abrir com um editor específico, pois isso abrirá o arquivo com o programa associado.

    
por 31.07.2013 / 10:33
0

Aqui está o script que usei em sua totalidade

#First choose an editor
$editorPath = "C:\Program Files (x86)\Notepad++\notepad++.exe"

#Next loop through a folder recusivly looking for "web.config"
#Recursive allows us to get websites stored inside websites
Get-ChildItem -Path "C:/Websites/" -recurse -filter web.config |

    #This is a where clause for each file.
    #I can find just the websites for a specific domain 
    #(or just delete this line below)
    ?{ $_.Directory.Name -match ".co.uk" } |

    #Now fire open that editor with this specific file
    %{Start-Process -FilePath $editorPath -ArgumentList $_.fullname}

Os arquivos são preenchidos no seu editor, um a um, conforme são encontrados.

    
por 03.09.2013 / 12:51
0

Um equivalente * nix muito simples sugere que deveríamos gastar tempo aprendendo os comandos e scripts do shell * nix, mesmo que trabalhemos predominantemente no MS Windows:

find . -name web.config | xargs start notepad++

Esse trabalho no MS Windows somente se você tiver utilitários Unix instalados, como Cygwin ou (meu favorito pessoal) git bash, que faz parte do Git for Windows .

    
por 05.01.2018 / 12:56