Получите последнее изменение файла Word 2010, открыв и используя ключи отправки из пакетного сценария.

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

Я попытался использовать этот раздел справки, чтобы исправить это, но мне не повезло: Press Keyboard ключи с помощью пакетного файла

Вот мои проблемы:

  1. Это работает только в том случае, если Word уже открыт, а затем меняет открытое окно на нужный мне файл. Можем ли мы сделать так, чтобы мне не приходилось сначала открывать слово?

  2. Он может набирать текст только в word. Кажется, не удается отправить специальные клавиши, такие как alt. Я пытался "{%}", но это дает мне ошибку времени выполнения Java. Итак, я предполагаю, что что-то не так с Jscript внизу?

  3. Если я попытаюсь использовать WScript.Sleep 5000, я также получу ошибку времени выполнения.

  4. Если я попытаюсь указать, какое окно сделать активным, WshShell.AppActivate, я получу ошибку времени выполнения.

Я также новичок в Jscript. Буду благодарен за любую помощь. Спасибо, СиДжей.

Мой код:

@if (@CodeSection == @Batch) @then

@echo off

rem use the sendkeys 
set SendKeys=CScript //nologo //E:JScript "%~F0"

cd C:\users\cbaker\desktop
start /w test.doc

%SendKeys% "{%}"
%SendKeys% "f"
%SendKeys% "i"
%SendKeys% "{tab 14}"
%Sendkeys% "^c"

rem Open notepad
cd C:\windows
start /w notpad.exe

%SendKeys% "^(V)"

goto :EOF

@end

// JScript section

var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));

person user3523893    schedule 11.04.2014    source источник


Ответы (1)


Вы можете ознакомиться с использованием VBScript, например здесь.

По сути, вы должны сохранить сценарий, подобный приведенному ниже, в файл с именем «GetInfo.vbs», а затем запустить

CSCRIPT /NOLOGO GetInfo.vbs

в командной строке.

Или вы можете дважды щелкнуть его в проводнике Windows (Файл).

Обратите внимание, что вам придется изменить имя во второй строке, чтобы оно соответствовало вашему документу. Вам также, возможно, придется посмотреть, как передавать аргументы в командной строке, чтобы вы могли запустить ее с именем документа, который вы хотите проверить.

Set objPropertyReader = CreateObject("DSOleFile.PropertyReader") 
Set objDocument = objPropertyReader.GetDocumentProperties _ 
    ("C:\Scripts\Test.doc") 

Wscript.Echo "Application name: " & objDocument.AppName 
Wscript.Echo "Author: " & objDocument.Author 
Wscript.Echo "Comments: " & objDocument.Comments 
Wscript.Echo "Company: " & objDocument.Company 
Wscript.Echo "Date created: " & objDocument.DateCreated 
Wscript.Echo "Date last saved: " & objDocument.DateLastSaved 
Wscript.Echo "Last edited by: " & objDocument.LastEditedBy 

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

On Error Resume Next

Set objWord = CreateObject("Word.Application")
Wscript.Echo "Active Printer:", objWord.ActivePrinter

For Each objAddIn in objWord.AddIns
    Wscript.Echo "AddIn: ", objAddIn
Next

Wscript.Echo "Application:", objWord.Application
Wscript.Echo "Assistant:", objWord.Assistant

For Each objCaption in objWord.AutoCaptions
    Wscript.Echo "AutoCaptions:", objCaption
Next
Wscript.Echo "Automation Security:", objWord.AutomationSecurity
Wscript.Echo "Background Printing Status:", objWord.BackgroundPrintingStatus
Wscript.Echo "Background Saving Status:", objWord.BackgroundSavingStatus
Wscript.Echo "Browse Extra File Type:", objWord.BrowseExtraFileTypes
Wscript.Echo "Build:", objWord.Build
Wscript.Echo "Caps Lock:", objWord.CapsLock
Wscript.Echo "Caption:", objWord.Caption

For Each objLabel in objWord.CaptionLabels
    Wscript.Echo "Caption Label:", objLabel
Next

Wscript.Echo "Check Language:", objWord.CheckLanguage

For Each objAddIn in objWord.COMAddIns
    Wscript.Echo "COM AddIn:", objAddIn
Next

Wscript.Echo "Creator:", objWord.Creator

For Each objDictionary in objWord.CustomDictionaries
    Wscript.Echo "Custom Dictionary:", objDictionary
Next

Wscript.Echo "Customization Context:", objWord.CustomizationContext
Wscript.Echo "Default Legal Blackline:", objWord.DefaultLegalBlackline
Wscript.Echo "Default Save Format:", objWord.DefaultSaveFormat
Wscript.Echo "Default Table Separator:", objWord.DefaultTableSeparator

For Each objDialog in objWord.Dialogs
    Wscript.Echo "Dialog:", objDialog
Next

Wscript.Echo "Display Alerts:", objWord.DisplayAlerts
Wscript.Echo "Display Recent Files:", objWord.DisplayRecentFiles
Wscript.Echo "Display Screen Tips:", objWord.DisplayScreenTips
Wscript.Echo "Display Scroll Bars:", objWord.DisplayScrollBars

For Each objDocument in objWord.Documents
    Wscript.Echo "Document:", objDocument
Next

Wscript.Echo "Email Template:", objWord.EmailTemplate
Wscript.Echo "Enable Cancel Key:", objWord.EnableCancelKey
Wscript.Echo "Feature Install:", objWord.FeatureInstall

For Each objConverter in objWord.FileConverters
    Wscript.Echo "File Converter:", objConverter
Next

Wscript.Echo "Focus In MailHeader:", objWord.FocusInMailHeader

For Each objFont in objWord.FontNames
    Wscript.Echo "Font Name:", objFont
Next

Wscript.Echo "Height", objWord.Height

For Each objBinding in objWord.KeyBindings
    Wscript.Echo "Key Binding:", objBinding
Next

For Each objFont in objWord.LandscapeFontNames
    Wscript.Echo "Landscape Font Name:", objFont
Next

Wscript.Echo "Language", objWord.Language

For Each objLanguage in objWord.Languages
    Wscript.Echo "Language:", objLanguage
Next

Wscript.Echo "Left", objWord.Left
Wscript.Echo "Mail System:", objWord.MailSystem
Wscript.Echo "MAPI Available:", objWord.MAPIAvailable
Wscript.Echo "Math Coprocessor Available:", objWord.MathCoprocessorAvailable
Wscript.Echo "Mouse Available:", objWord.MouseAvailable
Wscript.Echo "Name:", objWord.Name
Wscript.Echo "Normal Template:", objWord.NormalTemplate
Wscript.Echo "Num Lock:", objWord.NumLock
Wscript.Echo "Parent:", objWord.Parent
Wscript.Echo "Path:", objWord.Path
Wscript.Echo "Path Separator:", objWord.PathSeparator
Wscript.Echo "Print Preview:", objWord.PrintPreview

For Each objFile in objWord.RecentFiles
    Wscript.Echo "Recent File:", objFile
Next

Wscript.Echo "Screen Updating:", objWord.ScreenUpdating
Wscript.Echo "Show Visual Basic Editor:", objWord.ShowVisualBasicEditor
Wscript.Echo "Special Mode:", objWord.SpecialMode
Wscript.Echo "Startup Path:", objWord.StartupPath

For Each objTask in objWord.Tasks
    Wscript.Echo "Task:", objTask
Next

For Each objTemplate in objWord.Templates
    Wscript.Echo "Template:", objTemplate
Next

Wscript.Echo "Top:", objWord.Top
Wscript.Echo "Usable Height:", objWord.UsableHeight
Wscript.Echo "Usable Width:", objWord.UsableWidth
Wscript.Echo "User Address:", objWord.UserAddress
Wscript.Echo "User Control:", objWord.UserControl
Wscript.Echo "User Initials:", objWord.UserInitials
Wscript.Echo "User Name:", objWord.UserName
Wscript.Echo "Version:", objWord.Version
Wscript.Echo "Visible:", objWord.Visible
Wscript.Echo "Width:", objWord.Width

For Each objWindow in objWord.Windows
    Wscript.Echo "Window:", objWindow
Next

Wscript.Echo "Window State:", objWord.WindowState
objWord.Quit
person Mark Setchell    schedule 11.04.2014
comment
Большое спасибо. Я попробую. - person user3523893; 15.04.2014