注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

chunwaihome 的博客

 
 
 

日志

 
 

File Plugin  

2009-11-18 09:25:29|  分类: Powerpro Plugin |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

文件的打開操作表示將給用戶指定的文件在內存分配一個FILE結構區,並將該結構的指針返回給用戶程序,以後用戶程序就可用此FILE指針來實現對指定文件的存取操作了。當使用打開函數時,必須給出文件名、文件操作方式(讀、寫或讀寫),如果該文件名不存在,就意味著建立(只對寫文件而言,對讀文件則出錯),並將文件指針指向文件開頭。若已有一個同名文件存在,則刪除該文件,若無同名文件,則建立該文件,並將文件指針指向文件開頭。 

fh 表示開啟檔案的handle值,此值通常由f 100作開始

str is used to identify a string or a variable holding a string.

 fh = file.open(str1,str2  

語法:fh = File.Open(str1, str2)   

參數str2值可以是r(唯讀),w(可寫入),a(opens the file to have new information written after existing information )

例如

fh = file.open("c:/ppwork.txt","r")
win.debug(fh)

得出fh值為f 106,此值隨著每次執行命令而改變。如果不能開啟檔案得出值則為-2,表示不存在此檔案。

註:File.open是獲取檔案的handle值,而不是開啟檔案的意思。

 Locked
  fh.close 關閉檔案,fh值仍維持在f 106不變  Locked
  file.closeall  fh值會回復到f 100  Access
 fh.restart  fh值會回復到0  Locked
 str =fh.readline

 讀取檔案的第一行文字,例如

fh = file.open("c:/ppwork.txt","r")
str = fh.readstring
win.debug(str)

 Locked
 str=fh.readstring  讀取檔案的第一行文字,但結尾的\n和\r會被清除  Locked
 file.setmaxline(n) Sets maximum line length for subsequent file.readline calls.  If n <264, 264 is used.  If n>64K,  64K is used.  Locked
  fh.eof

EOF是End of File的縮寫。EOF是file插件提供其中一個函數,而它的主要功用是檢查檔案是否到達結尾的位置。它在循環語句中扮演著何時停止的角色,EOF等於0表示檔案還未到結尾位置,EOF等於1表示檔案己經到達結尾位置。

 Locked

 str=fh.writeline(str)

str=file.writeline(fh)

寫入文字到文字檔案中,而結尾加上\r或\n。

而執行fr.writeline的先決條件是將檔案設為可寫入狀態例如

fh = file.open("c:/ppwork.txt","w")
fh.writeline("ppp")

fh.writeline("www")
fh.close

結果:

ppwork.txt的內容將是

ppp

www

 Locked
str = File.WriteString(fh)
str = fh.WriteString

 寫入文字到文字檔案中,而writestring和writeline的不同之處是writestring會清除行尾的回車符號(\r或\n)。

fh = file.open("c:/ppwork.txt","w")
fh.writestring("ppp")

fh.writestring("www")

fh.writestring("\n")

fh.writestring("rrr")
fh.close

結果:

ppwork.txt的內容將是

pppwww

rrr

 

  •  自動登入FTP的腳本

建立一個ftpcommands.txt的文字檔案,然後用file.writeline命令將內容逐行逐行寫入。

local strtempdir=disk                  ;disk表示安裝Powerpro的磁盘符號,例如C。想了解更多的按此

Local fh=File.Open(strTempDir++":\\ftpcommands.txt", "w")

 if(fh>0) do
             Win.Debug("Successfully opened)
              File.WriteLine(fh,"open"++strHostname)
              File.WriteLine(fh, strUser)
              File.WriteLine(fh, strPassword)

             fh.close
             do("ftp", "-s:ftpcommands.txt", strTempDir)
 else
               Win.Debug("Filt Can't open )
endif

  • 怎樣建立FTP自動登入腳本

 需要建立应答文件。将以下内容存成一个txt文件,假如我存的名字是ftp.txt

open 192.168.1.2
username(实际用户名)
password(实际密码)

然后用ftp -s:ftp.txt就可以自动登陆了

 

  •  讀取文字檔案的每一行內容

 Local sFile, sCurString

sFile = File.Open("C:/win.txt", "r")

 If (sFile <= 0) Do

               Debug Error Cannot open file

                Quit

EndIf

For (not File.EOF(sFile))

              sCurString = File.ReadString(sFile)

               Debug &(sCurString)

EndFor

File.Close(sFile)

 

; script that reads the contents of a file

; and writes them to another

local sourcefile destfile num num

source= file.open("c:/ppwork3.txt","r")
destfile = file.open("c:/ppwork4.txt","w")

if ((sourcefile<=0) or (destfile<=0)) do
              win.debug("file cannot open")
              quit
Endif

for (not file.eof(source))
          num = file.readstring(source)
          num2 = file.writeline(dec,num)

Endfor
file.close(source)
file.close(dec)

 

; script that detects the line

; on which the file ends

Local numLine

Local strFile = File.Open("C:\win2.txt", "r")

For (numLine = 1 ; File.EOF(strFile) == 0 ; numLine = numLine + 1)

          File.ReadLine(strFile)

EndFor

Debug End of file is in line &(numLine - 1)

 

 命令

 意思

 file.delete(filepath)

刪除檔案:file.delete("c:/ppwork.txt")

或者

刪除目錄:file.delete("c:/ppwork")

 file.deletenorecycle(filepath)

直接刪除檔案並不保留到資源回收站

file.deletenorecycle("c:/ppwork.txt")

 res=file.copy(filepath1,filepath2,noerr)

複製filepath1目錄、子目錄和檔案到filepath2目錄上,而filepath2除了可以是目錄還可以是檔案。例如

file.copy("c:/ppwork.txt","u:/runtime.txt")

執行命令後runtime.txt內容將會被ppwork.txt所取替。

註:Dos的命令copy c:\ppwork.txt u:\runtime.txt也有相同的效果。

而noerror參數為1時,將不顯示錯誤訊息。

res=1表示複製檔案成功,res=0表示複製檔案失敗

  res=file.move(filepath1,filepath2,noerr)

file.move亦可以用file.rename代替

res=1表示移動檔案成功

res=0表示移動檔案失敗

 res = file.validpath(filepath)

檢查檔案是否存在例如

file.validpath("c:/*.txt")

res = 1表示檔案存在

res = 0表示檔案不存在

res = file.IsFolder(path) 

檢查資料夾是否存在例如

var = file.isfolder("c:/temp2/")

res = 1表示資料夾存在

res = 0表示資料夾不存在

 res = file.attrib(path)

獲取檔案屬性,得出res可以是以下的值:

a (archivable)

c(compressed)

d(directory)

h(hidden)

o(offline)

r(read only)

s(system)

t(temporary)

 var = file.readall(path)

讀取整個文字檔的內容例如

file.readallpath("c:/ppwork.txt")

能夠顯示整個檔案內容包括中文字体

 file.writeall(path,var,a)

寫入內容到檔案內,參數a表示不覆蓋原有的內容。

例子1:

file.writeall("c:/ppwork.txt","test\rname")

刪除ppwork原有的內容,寫入"text name"文字

例子2:

file.writeall("c:/ppwork.txt","test\rname","a")

不刪除ppwork原有的內容,寫入"text name"文字

\r表示回車的意思

 str = file.name(path)

讀取路徑的檔案名稱例如

file.name("c:/ppwork.txt")

結果為ppwork

 str = file.type(path)

讀取路徑的擴展名名稱例如

file.name("c:/ppwork.txt")

結果為txt

 str = file.nametype(path)

讀取路徑的檔案和擴展名名稱例如

file.name("c:/ppwork.txt")

結果為ppwork.txt

 str = file.folder(path)

讀取路徑的資料夾名稱例如

file.folder("c:/temp/ppwork.txt")

結果為c:\temp

 n =file.size(path)

讀取檔案的容量,單位以bytes計算

file.size("c:/ppwork.txt")

結果為49bytes

 n=file.ksize(path)

讀取檔案的容量,單位以kilobytes計算(size/1024)

file.ksize("c:/ppwork.txt")

結果為0,檔案容量小於1kb會視作0處理。

 str = file.lastmodified(path)

讀取檔案最後修改的日期和時間,格式為yyyymmddhhmmss

file.lastmodified("c:/ppwork.txt")

結果為20091120203220

 str = file.getdate(path,s)

讀取檔案創造和修改的日期和時間

s= c

returns the created date and time

s = m

returns the modified date and time

file.getdate("c:/ppwork.txt","c")

結果為20081222195449

file.getdate("c:/ppwork.txt","m")

結果為20091120203220

 str = file.setdate(path,s,date,time)

修改檔案創造和修改的日期和時間

s= c

change the created date and time

s = m

change the modified date and time

 str = file.version(path)

顯示檔案的版本名稱

例子: 

file.version(?"k:\Program Files\powerpro\powerpro.exe")

結果為4 9 1 4

 str = file.volume(path)

 讀取磁碟機的名稱例如

file.volume("k:")

得出結果為"Software"

file.volume("k:/driver/")

得出結果為""

 str = file.alldrives

顯示所有正掛著的磁碟機代號,每行顯示一部磁碟機代號例如

C:\
D:\
E:\
F:\

 res = file.createdirectory(dirpath)

建立新的資料夾。createdirectory可用newfolder代替

例如在C盘的temp目錄裏新增一個名bbb的子目錄

file.createdirectory("c:/temp/bbb")

file.newfolder("c:/temp/bbb")

res = 1表示新增目錄成功

res = 0表示新增目錄失敗

res=file.createshoftcut(target,fpathlink,desc,

params,iconpath,iconindex)

建立檔案捷徑

target(檔案真實的路徑)

fpathlink(捷徑的路徑和名稱)

desc(description)描述

params(參數)

iconpath(圖示的路徑格式為ico)

iconindex(圖示的index)

例子:

file.createShortcut("c:/ppwork.txt","u:/pp.lnk","描述","params",?"k:\ABC.ico")

在U盘裏建立一個在C盘名ppwork.txt真實檔案的pp.lnk捷徑檔案

 str=file.resolve(fpath,"info")

顯示捷徑檔案真實檔案的路徑。info可以是以下的參數:

parameters,description,work,icon,indicated

例子

file.resolve("u:/pp.lnk","ico")

 res = file.getshortpath(fpath)

 顯示檔案8.3格式名稱例如

file.getshortpath(?"k:\Program Files\powerpro\icon\WinControlIcons\WinMaxSideBar.ico")

結果為

k:\PROGRA~1\powerpro\icon\WINCON~1\WINMAX~1.ICO

 res = file.doverb(fpath,verb,nocontext)

運行檔案包括參數Verb

verb可以是properties,edit,print,open,delete,cut,copy,open with

例子:

res = file.doverb("c:/ppwork.txt")

if the third argument nocontext is present and set to 1, only verbs in the registry are allowed.

 file.AllFiles(path, command, subfoldersflag, pumpflug, hidden)  Cycles through all files in filepath and runs the command for each one.  The variable _file_ is set to each file name and can be used in the command,  Or the command may contain the character |; in this case, the | is replaced by the file being processed each time the command is run. 
   
   

  • AllFiles

語法: File.Allfiles(path,command,subfoldersflag,pumpflug,hidden)

在路徑中的每個檔案被執行相同的命令,而Powerpro將每個檔案的名稱設為_file_或 |。如果Hidden參數是1的話,它會包括隱藏檔案,0則不包括。

Subfolders flag參數可以是以下的值

0: 目錄裏的所有檔案

1: 目錄裏的所有檔案和子目錄裏的檔案

2: 目錄裏的所有檔案和子目錄

3: 目錄裏的所有檔案、子目錄裏的檔案和子目錄本身(即項目0+1+2)

4: 子目錄本身

5: 子目錄本身和裏面的所有檔案

例子:

File.AllFiles("c:/windows","","1")

計算c:/windows的檔案數目包括隱藏檔案

註:Command參數如果被省略或被是""的話,表示計算路徑的檔案數目。

File.AllFiles("c:/mypath/*.tmp", "file.delete(_file_)")

刪除所有在c:/mypath裏所有擴展名為.tmp的檔案,不包括子目錄,如果subfoldersflag被省略的話,默認值是0。

File.AllFiles("c:/mypath", "win.debug(_file_)")

列出所有在c:/mypath裏的所有檔案的完整路徑,不包括子目錄。

  • 計算目錄裏檔案數目

Command參數如果被省略的話,表示計算路徑中的檔案數目。假如c:/temp目錄包括2個子目錄aa和bb,而bb又包括另一子目錄cc,如下

C:/TEMP(600KB)

│  0906102121328810.jpg

│  090610212132882.jpg

│  090610212132887.jpg

├─aa(100KB)

│      CHANGJEI.UTF

│      ppwork.txt

│      QUICK.UTF

└─bb (300KB)                                           

    │  readme.txt

    │  Template.eMuleSkin.ini

    │  Template.Notifier.ini

    └─cc(100KB)

            Template.Notifier.ini

 項目

 命令

 數目

0

 File.allfiles("c:/temp","","0")  3

1

 File.allfiles("c:/temp","","1")  10

 2

 File.allfiles("c:/temp","","2")  6

 3

 File.allfiles("c:/temp","","3")      項目1加3個子目錄  13

 4

 File.allfiles("c:/temp","","4")  2

 5

  File.allfiles("c:/temp","","5")  3

  • 計算路徑的容量

如果Command參數是"Size"的話則表示計算路徑的總容量,以Bit作單位,Ksize則以KByte作單位。比如執行

File.allfiles("c:/temp","Ksize","1")

得出結果是600KB

 

  • ListFiles

語法:file.listfiles(path,subfoldersflag,pumpflag)

顯示資料夾內檔案的完整路徑。

例子

C:\TEMP
│  090610212132887.jpg
│ 
├─aa
│      將youtube加入163網址.txt
│     
└─bbb
    │  readme.txt
    │ 
    └─ccc
            Template.Notifier.ini

執行以下命令

local var = file.listfiles("c:/temp","1")
win.debug(var)

得出結果是:

c:\temp\090610212132887.jpg
c:\temp\aa\將youtube加入163網址.txt
c:\temp\bbb\ccc\Template.Notifier.ini
c:\temp\bbb\readme.txt

你還可以用萬字元來顯示指定擴展名的檔案,例如我只想顯示所有jpg的圖檔。

file.listfiles("c:/temp/*.jpg","1")

但listfiles不能顯示所有擴展名檔案它不在根目錄中。例如執行file.listfiles("c:/temp/*.txt","1")不能顯示任何結果。

  • 用Pickfiles執行選取檔案

你亦可以用pickfile命令來執行在窗口中所選的檔案

do(pickfile(file.listfiles("C:/temp",1),"play"),"")

  •  WatchFolder

語法:han = file.watchfolder(path,cmd,maxwait,keywords)

監察資料夾的任何變動,至於是什麼變動取決於參數keywords,keywords可以是以下任何值

  1. File                 監察檔案的新增、刪除和重新命名
  2. Folder             監察資料夾的新增、刪除和重新命名
  3. size                  監察檔案的容量變更
  4. subtree             監察包括子目錄
  5. lastwrite            監察檔案的最後寫入資料
  6. security             監察檔案的權限變更

如果keywords參數被省略的話,file參數將會被默認值。

  • Global Variable

 _file_顯示新增、刪除和重新命名的檔案名稱

_folder_則顯示新增、刪除和重新命名的檔案名稱

_exit_則顯示檔案變更的狀況,包括以下的值

0 for unknown,

1 for timeout,

2 for file added,

3 for file deleted,

4 for file attributes changed,

5 for file renamed.

例子:

我想監察U盘有否感染Autorun.ini病毒,什麼是autorun.inf病毒按此;假設U盘的磁碟機名稱是U:,執行以下的命令

file.watchfolder("u:/","win.debug (,)","","file folder")

它將會監察U盘根目錄檔案和資料夾的新增、刪除和重新命名的情況,如果在你插入U盘後,autorun.inf檔案被創造,它會自動執行message(,)命令,(,)表示檔案的完整路徑。

 

但執行file.delete(,)就不能運作

file.watchfolder("u:/","file.delete (,)","","file folder")

  评论这张
 
阅读(672)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017