0

我有以下任务,我想知道什么是最好和最快的方法来做到这一点。我正在考虑编写脚本而不是 C# 应用程序,但在 DOS 中编写脚本时遇到了困难。我想使用 powershell 但不确定是否所有机器都安装了 powershell :

我有大约 15 台 Windows 机器,在每台机器中,我想找到所有 *.config 文件(比如 C:\ 和 D:)并替换一个特定的单词(数据库名称)。

我可以在本地执行此操作或远程执行此操作,因为我可以登录到机器。但最难的部分是剧本。

任何指针都会很好地开始。

谢谢。

4

2 回答 2

1

维基百科有一些关于哪些版本的 Windows 有 PowerShell 的信息。

PowerShell 1.0 版于 2006 年发布,适用于 Windows XP SP2/SP3、Windows Server 2003 和 Windows Vista.... 2.0 版与 Windows 7 和 Windows Server 2008 R2 集成,并针对带有 Service Pack 3、Windows Server 的 Windows XP 发布2003 带有 Service Pack 2,Windows Vista 带有 Service Pack 1。版本 3.0 与 Windows 8 和 Windows Server 2012 集成。Microsoft 还为带有 Service Pack 1 的 Windows 7 和带有 Service Pack 1 的 Windows Server 2008 提供了 PowerShell 3 ,以及带有 Service Pack 1 的 Windows Server 2008 R2。

要在 Win 7 上安装版本 3,您需要WMF 3.0 包

于 2013-06-13T18:18:29.830 回答
0

这是未经测试且具有破坏性的,因此请先进行测试。-它旨在搜索 C: 和 D: 驱动器和所有子目录并修改所有 *.config 文件。

它设置为在 c:\abc 和 d:\abc 树 atm 中查找,因此在其中放置一些文件和文件夹并对其进行测试。

@echo off
for /f "delims=" %%a in ('dir c:\abc\*.config d:\abc\*.config /b /s /a-d') do (
call :sar "%%a" "%%a.tmp" "db_name" "new_db_name"
move /y "%%a.tmp" "%%a" >nul
)
goto :EOF
:sar
:: inputfile outputfile regexp_search replacement
if "%~5"=="" (set global=true) else (set global=false)
set s=regex.replace(wscript.stdin.readall,"%~4")
 >_.vbs echo set regex=new regexp
>>_.vbs echo regex.global=%global%
>>_.vbs echo regEx.IgnoreCase=True
>>_.vbs echo regex.pattern="%~3"
>>_.vbs echo wscript.stdOut.write %s%
cscript /nologo _.vbs <"%~1" >"%~2"
del _.vbs
goto :EOF
于 2013-06-13T19:27:56.200 回答