TheDcoder Posted March 15, 2015 Author Posted March 15, 2015 you are finding out why. Hints Appreciated TD EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion
water Posted March 15, 2015 Posted March 15, 2015 Can't you add this information at the end of the file? Or in a second file with the same name but a different filetype? Or in a ADS? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
TheDcoder Posted March 15, 2015 Author Posted March 15, 2015 Can't you add this information at the end of the file? Yes, I can, but still I would like to know if there is a way.... Or in a ADS? Would you mind expanding "ADS"? TD EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion
water Posted March 15, 2015 Posted March 15, 2015 Alternate Data Streams. A feature of the NTFS filesystem. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
TheDcoder Posted March 15, 2015 Author Posted March 15, 2015 Thanks water, I want my log files to survive in ext file-systems too EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion
water Posted March 15, 2015 Posted March 15, 2015 As long as it is NTFS you are fine. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
JohnOne Posted March 15, 2015 Posted March 15, 2015 I do not think ADS survives transport from one disk to another does it? AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans.
TheDcoder Posted March 15, 2015 Author Posted March 15, 2015 I do not think ADS survives transport from one disk to another does it? If transferred internally using 2 hard-disk in the same system with NTFS file system being used in both hard-disks, It will survive.... (Or a USB formatted in NTFS would carry the file safely ) EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion
water Posted March 15, 2015 Posted March 15, 2015 ADS is ignored "when the file is copied or moved to another file system without ADS support, attached to an e-mail, or uploaded to a website." My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
BrewManNH Posted March 15, 2015 Posted March 15, 2015 Here is a VERY simple way to add something to the start of a text file. #include <FileConstants.au3> $sFilename = @ScriptDir & "\Test.txt" $hFile = FileOpen($sFilename, 2) ; create new file For $I = 1 to 10000 FileWriteLine($hFile, "Line: " & $I) ; create 10,000 lines of text Next FileClose($hFile) ; close the file ; Only this part is needed to add something to the start of the file, the top part is just to create the test file. $hFile = FileOpen($sFilename, 1) ; open file for append FileSetPos($hFile, 0, $file_begin) ; move the file pointer to the start of the file FileWriteLine($hFile, "I am line No. 1 now :P") ; write the line to the file FileWriteLine($hFile, " "); write a blank line to the file FileClose($hFile) It never reads the file itself, so it doesn't matter how large it is. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator
water Posted March 15, 2015 Posted March 15, 2015 When file was created: Line: 1 Line: 2 Line: 3 Line: 4 Line: 5 Line: 6 Line: 7 ... After the script has ended: I am line No. 1 now Line: 4 Line: 5 Line: 6 Line: 7 ... So it doesn't insert lines but simply overwrites them. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
SadBunny Posted March 15, 2015 Posted March 15, 2015 Writing 5 years worth of log into a single file is extremely unwieldy. How about getting Cygwin and writing an awk or perl oneliner to divide the logfile into multiple files, say per day or per month? Or even make an autoitscript to do that? IMHO that would be a much better use of your time. If I were you, I would go looking for a way to have the base application rotate its logfiles and/or reconfigure the logging properties. If not possible, plan B would be to write some sort of daily repeating operation (like a cronjob) to rename the logfile to another name (logfile.<date> comes to mind) as a sort of deus-ex-machina log rotation mechanism. Don't know if there's enough letters in the alphabet to assign a 5-years-old-but-still-active logfile a plan letter Roses are FF0000, violets are 0000FF... All my base are belong to you.
TheDcoder Posted March 16, 2015 Author Posted March 16, 2015 @SadBunny You can refer to >this post TD EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion
mpower Posted March 16, 2015 Posted March 16, 2015 (edited) TheDcoder, did you even bother looking at the two links I posted? expandcollapse popupIf Not FileExists(_CygwinDir()) Then ;if cygwin directory doesnt exist on system drive MsgBox(16, 'Error', 'Please install Cygwin [http://cygwin.com/install.html]') Exit ElseIf Not FileExists(_CygwinDir() & '\bin\ed.exe') Then ;if ed.exe doesn't exist MsgBox(16, 'Error', 'Please ensure ed package for Cygwin is installed - it is located under Editors in the Cygwin installer [http://cygwin.com/install.html].') Exit EndIf $sFilename = _CygwinDir() & '\home\' & @UserName & '\test.txt' $hFile = FileOpen($sFilename, 2) ; create new file For $i = 1 to 10000 FileWriteLine($hFile, "Line with some text: " & $i) ; create 10,000 lines of text Next FileClose($hFile) ; close the file $myfile = 'test.txt' $command = "ed -s "&$myfile&" << 'EOF'"&@CR&"0a"&@CR&"prepend these lines"&@CR&"to the beginning"&@CR&"."&@CR&"w"&@CR&"EOF" $cygwin = ShellExecute(_CygwinDir() & '\Cygwin.bat') ;run cygwin $hWnd = WinWaitActive('~') ;wait for console ControlSend($hwnd, "", "", $command) ;send ed command ControlSend($hwnd, "", "", "{ENTER}") ;execute command Sleep(1000) WinKill($hWnd) MsgBox(0, 'Done', "Ta-Da!") ShellExecute(_CygwinDir() & '\home\' & @UserName & '\') ;open the home directory Func _CygwinDir() Local $CygwinDir Switch @OSArch Case "X86" $CygwinDir = "\cygwin" Case "X64" $CygwinDir = "\cygwin64" EndSwitch $systemdrive = EnvGet('systemdrive') Return $systemdrive & $CygwinDir EndFunc That's one way of doing it. I'm sure its also doable without having the cygwin window visible (probably by just passing command as an argument) but it is beyond my autoit/programming skills. Edited March 16, 2015 by mpower
TheDcoder Posted March 16, 2015 Author Posted March 16, 2015 TheDcoder, did you even bother looking at the two links I posted? Sorry mpower, When I saw the word "cygwin" my mind instantly ignored your post... Although your idea works but installing cygwin is a burden in itself. I need a more simple & universal way of doing it, hope you don't mind my ignorance or rude kind of behavior Your work is greatly appreciated TD EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion
Solution BrewManNH Posted March 16, 2015 Solution Posted March 16, 2015 Sorry about the post above, lack of proper testing on my part. This script will not overwrite the text in the file, but will add the new text above it. ;~ #include <FileConstants.au3> #include <File.au3> $sFilename = @ScriptDir & "\Test.txt" $hFile = FileOpen($sFilename, 2) ; create new file For $I = 1 To 10000 FileWriteLine($hFile, "Line: " & $I) ; create 10,000 lines of text Next FileClose($hFile) ; close the file ; Only this part is needed to add something to the start of the file, the top part is just to create the test file. $hFile1 = FileOpen(@ScriptDir & "\Dummy.txt", 2) ; create dummy file, can be deleted later in the script or reused for other files FileWriteLine($hFile1, "I am line No. 1 now :P ") ; write the line to the file FileWriteLine($hFile1, " ") FileClose($hFile1) ; close the file RunWait(@ComSpec & " /c copy /b " & @ScriptDir & "\Dummy.txt + " & $sFilename & " " & @ScriptDir & "\test1.txt", "", @SW_HIDE) ; copy the dummy file to the top of the text file and create a new temp file FileMove(@ScriptDir & "\test1.txt", $sFilename, $FC_OVERWRITE) ; overwrite the original file with the temp file, deleting the temp file TheDcoder 1 If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator
mpower Posted March 16, 2015 Posted March 16, 2015 Sorry about the post above, lack of proper testing on my part. This script will not overwrite the text in the file, but will add the new text above it. ;~ #include <FileConstants.au3> #include <File.au3> $sFilename = @ScriptDir & "\Test.txt" $hFile = FileOpen($sFilename, 2) ; create new file For $I = 1 To 10000 FileWriteLine($hFile, "Line: " & $I) ; create 10,000 lines of text Next FileClose($hFile) ; close the file ; Only this part is needed to add something to the start of the file, the top part is just to create the test file. $hFile1 = FileOpen(@ScriptDir & "\Dummy.txt", 2) ; create dummy file, can be deleted later in the script or reused for other files FileWriteLine($hFile1, "I am line No. 1 now :P ") ; write the line to the file FileWriteLine($hFile1, " ") FileClose($hFile1) ; close the file RunWait(@ComSpec & " /c copy /b " & @ScriptDir & "\Dummy.txt + " & $sFilename & " " & @ScriptDir & "\test1.txt", "", @SW_HIDE) ; copy the dummy file to the top of the text file and create a new temp file FileMove(@ScriptDir & "\test1.txt", $sFilename, $FC_OVERWRITE) ; overwrite the original file with the temp file, deleting the temp file This takes the cake, well done! I stand corrected, cygwin is not needed after all I thought your solution might have problems with larger files but after testing on a ~140mb file with 10,000,000 lines it took only 0.2 seconds to prepend the lines. I am confident it will work with much larger files without any issues also.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now