2014-01-09 103 views
0

我必須轉換很多舊的Windows WRI文件。我得到了舊的寫字板 - write.exe,運行XP或更早的WIN。 我找不到關於write.exe的可用命令行選項的任何信息。 只有選項看起來是:打開的文件通過第一個參數傳遞或打印文件通過附加的/ p參數。使用write.exe自動將舊.wri文件轉換爲.txt文件?

我需要的是:自動(批處理腳本)打開WRI文件,並使用WRITE.EXE

回答

0

看那AutoIt論壇,可以自動的GUI程序保存爲TXT文件。

0

安裝打印機: 「*本地打印機* R」 - 「利用現有」 - 「文件:」 由於打印機驅動程序使用「通用」 - 「通用/文本僅」。 然後你可以「打印」的文件,文件:

for %%i in (*.wri) do write /p %%i 
+0

這是不一樣的:開放WRITE.EXE編輯和做「保存爲TXT文本文件」命令。 通過使用通用打印機 - 結果文件將包含來自原始WRI文件的無效字符。所以這個答案沒有用。 –

+0

有一個「Generic」和一個「Generic/Text only」驅動程序。 「僅限文本」不應生成任何無效字符。我從來沒有遇到過麻煩。 – Stephan

+0

是的,我試過「通用/純文本」=>無效字符。我假設這個驅動程序不能與XP上的傳統WRITE.EXE(3.10版)程序一起使用。 (我正在討論舊的write.exe版本,而不是原始的XP write.exe 5.1) –

0

創建AutoIt腳本:

#include <File.au3> 
#include <Array.au3> 
#include <MsgBoxConstants.au3> 
#include <FileConstants.au3> 

; http://www.autoitscript.com/site/autoit/downloads/ 

Opt("WinTitleMatchMode", 1) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase 

Local $sWriteExePath = @WorkingDir & "\write.exe" 
If Not FileExists($sWriteExePath) Then 
    $sWriteExePath = FileOpenDialog("Select the write.exe path", "c:\", "Write (write.exe)", $FD_FILEMUSTEXIST) 
    If @error Then 
     MsgBox($MB_SYSTEMMODAL, "", "No write.exe path was selected!") 
     Exit 
    EndIf 
EndIf 

Local $sFilePath = FileSelectFolder("Select the WRI files directory", "c:\") 
If @error Then 
    MsgBox($MB_SYSTEMMODAL, "", "No folder was selected!") 
    Exit 
EndIf 

Local $aFileList = _FileListToArray($sFilePath, "*.wri", 1) 
If @error = 1 Then 
    MsgBox($MB_SYSTEMMODAL, "", "Path was invalid!") 
    Exit 
EndIf 
If @error = 4 Then 
    MsgBox($MB_SYSTEMMODAL, "", "No files were found!") 
    Exit 
EndIf 

For $i = 1 To $aFileList[0] 
    Call("WriToTxt", $sWriteExePath, $sFilePath, $aFileList[$i]) 
Next 

Func WriToTxt($writeExe, $dir, $fileName) 
    Local $pathFrom = $dir & '\' & $fileName 
    Local $pathTo = StringReplace($pathFrom, ".wri", ".txt", 1) 
    Local $winName = "Write - " & StringReplace($fileName, ".wri", '') 

    If Not FileExists($pathTo) Then 
     Run($writeExe & ' ' & $pathFrom) 
     WinWaitActive($winName) 
     Send("!fa") 
     WinWaitActive("Save As") 
     Send($pathTo) 
     ControlSend("Save As", "", "[CLASS:ComboBox; INSTANCE:1]", "Text Files (*.TXT)") 
     Sleep(1) 
     ControlClick("Save As", "", "[CLASS:Button; TEXT:OK]") 
     WinWaitActive("Write", "Do you want to save?", 2) 
     If WinActive("Write", "Do you want to save?") Then 
     Send("!y") 
     EndIf 
     WinClose($winName) 
    EndIf 
EndFunc 
相關問題