2013-07-18 2 views
-1

интересно, если кто-то будет достаточно любезен, чтобы помочьVBScript в Powershell скрипт

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

С точки зрения VBScript, я следующий до сих пор (в разделах), но не может:

  • Выяснить, как имена файлов вывода, которые начинаются с определенным именем или содержат XYZ
  • Как передать имена файлов в качестве значений реестра (в WshShell.RegWrite разделе ниже)
  • Как объединить два раздела в один скрипт
Dim fso 
Dim ObjFolder 
Dim ObjOutFile 
Dim ObjFiles 
Dim ObjFile 
Set fso = CreateObject("Scripting.FileSystemObject") 

Set ObjFolder = fso.GetFolder("C:\JetInfo") 

Set ObjOutFile = fso.CreateTextFile("C:\WindowsFiles.txt") 

Set ObjFiles = ObjFolder.Files 

For Each ObjFile In ObjFiles 
    ObjOutFile.WriteLine(ObjFile.Name & String(50 - Len(ObjFile.Name), " ")) 
Next 

ObjOutFile.Close 

Set WshShell = WScript.CreateObject("WScript.Shell") 

WshShell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\NewSignature", "INPUT FILE NAME HERE", "REG_EXPAND_SZ" 
+2

Да, это возможно. (С чем вы, в частности, сталкиваетесь?) – zdan

+0

См. Выше, спасибо – user2596770

ответ

1
  • имена выходных файлов, которые начинаются с определенной строки:

    str = "foobar" 
    
    For Each f In fso.GetFolder("C:\JetInfo").Files 
        If LCase(Left(f.Name, Len(str))) = LCase(str) Then 
        WScript.Echo f.Name 
        End If 
    Next 
    

    имена выходных файлов, которые содержат определенную строку:

    str = "foobar" 
    
    For Each f In fso.GetFolder("C:\JetInfo").Files 
        If InStr(LCase(f.Name), str) > 0 Then 
        WScript.Echo f.Name 
        End If 
    Next 
    
  • Введите имя файла в реестр:

    Set f = fso.GetFile("C:\path\to\some.file") 
    
    WshShell.RegWrite "HKCU\Software\Microsoft\Office\14.0\Common\NewSignature" _ 
        , Chr(34) & Replace(f.Path, "\", "\\") & Chr(34), "REG_EXPAND_SZ" 
    

Что касается вашего третьего вопроса: какие ценности вы хотите создать из файлов? Было бы совершенно бессмысленно перезаписывать одно и то же значение снова и снова.

+0

Большое спасибо за вашу помощь. Что касается имен выходных файлов, содержащих определенную строку, можно ли выводить имена файлов, которые содержат определенную строку, а также иметь определенное расширение файла? Мне нужно создать значения реестра на основе имен файлов, так как эти значения задают определенные настройки в программе. – user2596770

+0

Уверен, это возможно. Соответствующий метод для этого - ['GetExtensionName()'] (http://msdn.microsoft.com/en-us/library/x0fxha2a%28v=vs.84%29.aspx). Однако вы все еще не объяснили, какие значения вы хотите создать. Как я уже сказал, не имеет смысла переписывать одно и то же значение несколько раз. –

Смежные вопросы