我们有一个程序可以在%appdata%\Roaming\
中安装配置文档。
我需要一个脚本,我可以通过GPO推出,它将执行以下操作:
鳍。
我试图为此开始学习Visual Basic,但我感觉很远 我的元素,因为我之前没有这样做过。
答案 0 :(得分:0)
可以像这样处理给定文件夹中的文件:
Set fso = CreateObject("Scripting.FileSystemObject")
For Each f In fso.GetFolder("C:\your\folder").Files
'do stuff
Next
仅处理具有特定扩展名的文件(例如.foo
),添加如下条件:
Set fso = CreateObject("Scripting.FileSystemObject")
For Each f In fso.GetFolder("C:\your\folder").Files
If LCase(fso.GetExtensionName(f.Name)) = "foo" Then
'do stuff
End If
Next
如果您还要处理子文件夹中的文件,则需要recurse into subfolders。
字符串替换部分可能如下所示:
text = f.OpenAsTextStream.ReadAll
If InStr(text, "some string") > 0 Then
f.OpenAsTextStream(2).Write Replace(text, "some string", "other string")
End If
答案 1 :(得分:0)
这是我在评论中提到的Hybrid Batch / VBScript
复制代码并另存为FindAndReplace.cmd
从CMD
提示符或GP中的命令调用它,如下所示:
FindAndReplace "String to Find" "String to Replace"
我设置它的方式,它只会搜索以.txt结尾的文件并将递归到子文件夹中。将mask变量设置为顶级文件夹和filemask。如果您不想替换子文件夹中的文件中的文本,请从/S
命令中删除DIR
。它不区分大小写
FindAndReplace "String to Find" "String to Replace" is the same as
FindAndReplace "STRING TO FIND" "STRING TO REPLACE" or
FindAndReplace "String TO FIND" "STRING To Replace"
::Find and Replace
::Matt Williamson
::5/30/2013
@echo off
setlocal
set mask=%appdata%\My Folder\*.txt
set tmp="%temp%\tmp.txt"
If not exist %temp%\_.vbs call :MakeReplace
for /f "tokens=*" %%a in ('dir "%mask%" /s /b /a-d /on') do (
for /f "usebackq" %%b in (`Findstr /mic:"%~1" "%%a"`) do (
echo(&Echo Replacing "%~1" with "%~2" in file %%~nxa
<%%a cscript //nologo %temp%\_.vbs "%~1" "%~2">%tmp%
if exist %tmp% move /Y %tmp% "%%~dpnxa">nul
)
)
del %temp%\_.vbs
exit /b
:MakeReplace
>%temp%\_.vbs echo with Wscript
>>%temp%\_.vbs echo set args=.arguments
>>%temp%\_.vbs echo .StdOut.Write _
>>%temp%\_.vbs echo Replace(.StdIn.ReadAll,args(0),args(1),1,-1,1)
>>%temp%\_.vbs echo end with