我在一台运行 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 命令可以编写来打开所有具有相同目录结构、文件名和扩展名的文件,例如打开根网站文件夹内特定目录内的配置文件?
我可以在特定的文本编辑器中打开它们吗?
答案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
}
}
它将使用 notepad++打开web.config
所有文件夹中的所有文件。C:/Websites
您还可以使用应用程序命令获取网站。这将仅获取网站,而不是所有文件夹。
答案2
以下是我使用的完整脚本
#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}
找到的文件将逐个放入编辑器中。
答案3
这个答案是基于原始问题的(由于问题已更新,这个答案并非 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
您可能需要将配置文件与特定的编辑器关联起来,因为这将使用关联的程序打开该文件。
答案4
一个非常简单的 *nix 等效项向我暗示,我们应该花时间学习 *nix shell 命令和脚本,即使我们主要在 MS Windows 上工作:
find . -name web.config | xargs start notepad++
此功能仅在安装了 Unix 实用程序(例如通过)的情况下才在 MS Windows 上有效赛格威或者(我个人最喜欢的)git bash,它是适用于 Windows 的 Git。