Я нахожусь на компьютере с Windows (Server 2008), который обслуживает веб-сайты. Сайты организованы в папки:

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

Каждая из этих папок имеет почти идентичный контент, кроме файлов конфигурации, таких как web.config.

Я хочу открыть один и тот же файл на всех этих сайтах, чтобы выполнить редактирование.

Можно ли написать команду Dos / Powershell, чтобы открыть все файлы с одинаковой структурой каталогов, именем и расширением, например, открыть файлы конфигурации, которые находятся в определенных каталогах, вне папки корневых веб-сайтов?

Могу ли я открыть их в определенном текстовом редакторе?

4 ответа4

1

Используйте этот скрипт 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
    }
}

Он откроет все файлы web.config во всех папках C:/Websites с помощью notepad++.

Вы также можете использовать AppCmd.exe для получения веб-сайтов. Это будет получать только веб-сайты вместо всех папок.

0

Этот ответ был основан на исходном вопросе (поскольку вопрос обновлен, этот ответ не является релевантным на 100%, но все же может пригодиться в будущем, поэтому я не буду его удалять)

Вы можете использовать команду запуска в командном файле. Так как я предполагаю, что вы уже знаете, где находятся файлы конфигурации, вы сможете написать список, а затем выполнить его из командного файла.

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

Вам может потребоваться связать файл конфигурации, чтобы открыть его с определенным редактором, так как это откроет файл с соответствующей программой.

0

Вот сценарий, который я использовал во всей его полноте

#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}

Файлы заполняются по каплям в ваш редактор один за другим по мере их обнаружения.

0

Очень простой эквивалент * nix намекает мне на то, что нам следует потратить время на изучение команд и сценариев * nix shell, даже если мы преимущественно работаем в MS Windows:

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

Это работает на MS Windows, только если у вас установлены утилиты Unix, например, через Cygwin или (мой личный фаворит) git bash, который является частью Git для Windows.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .