scriptnewbie 0 Posted October 10, 2007 I am trying to create a folder that contains a blank text file. I have a script that I want to run one time on a workstation and not run again when someone else logs on. I am doing this by checking for the file and folder. I wrote the following short script to create the folder and put the file in it. My problem is that the folder gets created, but not the file. What am I missing. Thanks. #include <file.au3> $dir = DirCreate("C:\change") $flag=FileOpen ($dir & "\flag.txt", 2) FileClose($flag) Share this post Link to post Share on other sites
SmOke_N 211 Posted October 11, 2007 I am trying to create a folder that contains a blank text file. I have a script that I want to run one time on a workstation and not run again when someone else logs on. I am doing this by checking for the file and folder. I wrote the following short script to create the folder and put the file in it. My problem is that the folder gets created, but not the file. What am I missing. Thanks. #include <file.au3> $dir = DirCreate("C:\change") $flag=FileOpen ($dir & "\flag.txt", 2) FileClose($flag)Look at the "Return" value for DirCreate(), it's not the Directory you created or a Handle... it's a 1 or a 0 boolean style. Something like:$sFile = @HomeDrive & "\change" If DirCreate($sFile) Then FileClose(FileOpen($sFile & "\flag.txt", 2)) Else MsgBox(16, "Error", "Failed to create the directory") EndIf Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Share this post Link to post Share on other sites
star2 0 Posted October 11, 2007 (edited) #include <file.au3> $folder = @HomeDrive & "\change" If FileExists ($folder & "\flag.txt") = 1 Then MsgBox (-1 , "info" , "file already exists") EndIf If DirGetSize ($folder) = -1 Then ; this way u know that the folder does not exists DirCreate ($folder) FileWrite ($folder & "\flag.txt","") EndIf If DirGetSize ($folder) >= 0 And FileExists ($folder & "\flag.txt") = 0 Then FileWrite ($folder & "\flag.txt","") EndIf I'm not sure of what u want Edited October 11, 2007 by star2 [quote]Baby you're all that I want, When you're lyin' here in my armsI'm findin' it hard to believe, We're in heavenAnd love is all that I need , And I found it there in your heartIt isn't too hard to see, We're in heaven .Bryan Adams[/quote].............................................................................[u]AUTOIT[/u] Share this post Link to post Share on other sites
SmOke_N 211 Posted October 11, 2007 #include <file.au3> $folder = @HomeDrive & "\change" If FileExists ($folder & "\flag.txt") = 1 Then MsgBox (-1 , "info" , "file already exists") EndIf If DirGetSize ($folder) = -1 Then ; this way u know that the folder does not exists DirCreate ($folder) FileWrite ($folder & "\flag.txt","") EndIf If DirGetSize ($folder) >= 0 And FileExists ($folder & "\flag.txt") = 0 Then FileWrite ($folder & "\flag.txt","") EndIf I'm not sure of what u wantJust FYI... You don't need to get the Dir size to know if the directory exists or not... You can use If FileExists($folder) as well. Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer. Share this post Link to post Share on other sites
tAKTelapis 1 Posted October 11, 2007 (edited) Also, the modes for "fileopen" allow for you to ADD the mode numbers together to get a combined mode, thus: 1 = Write mode (append to end of file) 8 = Create directory structure if it doesn't exist (See Remarks). then 9 = Create directory structure AND file if it doesn't exist, then open the file for editing in append mode. So: $File = FileOpen("C:\change\flag.txt", 9) Alternatively if all you want do do is create the file, have a look at _FileCreate() in the helpfile, here is its example: #include <File.au3> If Not _FileCreate("error.log") Then MsgBox(4096,"Error", " Error Creating/Resetting log. error:" & @error) EndIf Edited October 11, 2007 by tAKTelapis Share this post Link to post Share on other sites