我必須轉換很多舊的Windows WRI文件。我得到了舊的寫字板 - write.exe,運行XP或更早的WIN。 我找不到關於write.exe的可用命令行選項的任何信息。 只有選項看起來是:打開的文件通過第一個參數傳遞或打印文件通過附加的/ p參數。使用write.exe自動將舊.wri文件轉換爲.txt文件?
我需要的是:自動(批處理腳本)打開WRI文件,並使用WRITE.EXE
我必須轉換很多舊的Windows WRI文件。我得到了舊的寫字板 - write.exe,運行XP或更早的WIN。 我找不到關於write.exe的可用命令行選項的任何信息。 只有選項看起來是:打開的文件通過第一個參數傳遞或打印文件通過附加的/ p參數。使用write.exe自動將舊.wri文件轉換爲.txt文件?
我需要的是:自動(批處理腳本)打開WRI文件,並使用WRITE.EXE
看那AutoIt
論壇,可以自動的GUI程序保存爲TXT文件。
安裝打印機: 「*本地打印機* R」 - 「利用現有」 - 「文件:」 由於打印機驅動程序使用「通用」 - 「通用/文本僅」。 然後你可以「打印」的文件,文件:
for %%i in (*.wri) do write /p %%i
創建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
這是不一樣的:開放WRITE.EXE編輯和做「保存爲TXT文本文件」命令。 通過使用通用打印機 - 結果文件將包含來自原始WRI文件的無效字符。所以這個答案沒有用。 –
有一個「Generic」和一個「Generic/Text only」驅動程序。 「僅限文本」不應生成任何無效字符。我從來沒有遇到過麻煩。 – Stephan
是的,我試過「通用/純文本」=>無效字符。我假設這個驅動程序不能與XP上的傳統WRITE.EXE(3.10版)程序一起使用。 (我正在討論舊的write.exe版本,而不是原始的XP write.exe 5.1) –