Mike's comment about the heads swinging back and forth prompted
me to try putting the two folders on different hard drives.
This had great results as it cut one third off the processing time,
making it 6 seconds.
Not so bad..
I also tried to incorporate the code, however I haven't succeeded
yet in getting it to work properly for some reason.
I will give it another try in the near future.
Thank you all very much for your insight giving comments and code.
Erik
[This message has been edited by Erik Loef (edited January 07, 2006).]
Announcement
Collapse
No announcement yet.
Open file, but write to another folder ?
Collapse
X
-
Code:SEEK #hOutputFile, LEN(Buffer$) + 1 'position to place end of file marker
The PUT$ automatically locates the file pointer at the proper location for SETEOF.
Leave a comment:
-
I would think it would be better to read the input file
first to keep the heads from moving back and forth between
the input file and the output file.
------------------
Leave a comment:
-
If I understand what you want to do correctly, you'll want Donald's
approach of "Opening a file for input and another file for output".
Binary would change the existing(Unless open seperate like above code),
so you want to open the originals as INPUT, then assuming you are keeping
the same names in the other folder open OtherFolderString + OrigFilenameString
for OUTPUT. Read the original files into the output files, append your data
and close. You could probably even open them for appending. Binary Reading to
a string all the existing file would probably be the quickest unless you need to
process the lines and make sure there are no extra CRLFs, etc.
------------------
If you aim at nothing...you will hit it.
[This message has been edited by Roger Garstang (edited January 07, 2006).]
Leave a comment:
-
Using SHELL to run DOS commands for the purpose of copying and
appending files does work, but so does just writing a .BAT file
to do the same thing.
Opening a file for input and reading the contents into an
array string, then appending new contents to the end of that
array before writing it out to a new file in a different folder
would be another way.
Opening a file for input and another file for output and reading
from one while writing to the other one line at a time would
also work - you just finish up the output file by writing the
added content at the end before you close it.
Opening a file for binary and reading in the whole content in
one step, then appending the additional content to the end of
the string before writing it to a new output file would also
work.
Opening a file for binary and reading in the whole content in
one step, then writing it all to the new output file, then
writing out the added content to it before closing it, would
also work.
These are just a few possible approaches, though probably the
most common ones. How you do it, even why you do it the way
you chose to do it, are left for the programmer to resolve.
------------------
Old Navy Chief, Systems Engineer, Systems Analyst, now semi-retired
Leave a comment:
-
Mike,
Thanks for your code, I am going to study it tomorrow.
I the meantime I managed to perfect my simplistic code a bit.
Especially the >null statement seems to hide the output of the xcopy statement.
Code:FOR j = 1 TO koersstringnr IF j = 1 THEN temp$ = "xcopy " + bronkoersenmap$ + "*.prn " + gebruikkoersenmap$ + ">null" SHELL temp$ END IF OPEN gebruikkoersenmap$ + convarray2krsnamen$( j ) + ".PRN" FOR APPEND AS #1 PRINT #1, convarray2$( j ) CLOSE #1 NEXT j
Leave a comment:
-
Code:#COMPILE EXE 'copier.bas #DIM ALL DECLARE FUNCTION ReadWrite(InputFilename AS STRING, _ OutputFilename AS STRING, _ AddThis AS STRING) AS LONG DECLARE FUNCTION Exist(DirFileName AS STRING) AS LONG 'Semen exist function FUNCTION PBMAIN () AS LONG LOCAL Inputfilename AS STRING, OutputFileName AS STRING, AddThis AS STRING, result AS LONG InputFilename = "c:\keep\go.bat" 'input file OutputFileName = "c:\keep\go.bak" 'output file AddThis = "Now is the time for all good men" 'text to add to output file result = ReadWrite(InputFileName, OutputFileName, AddThis) '0 = success END FUNCTION FUNCTION ReadWrite(InputFileName AS STRING, OutputFileName AS STRING, AddThis AS STRING) AS LONG LOCAL Buffer AS STRING, hInputFile AS LONG, hOutputFile AS LONG IF ISFALSE Exist(InputFileName) THEN FUNCTION = 53 BEEP EXIT FUNCTION END IF hInputFile = FREEFILE OPEN InputFilename$ FOR BINARY ACCESS READ AS #hInputfile IF ERR THEN FUNCTION = ERR:EXIT FUNCTION GET$ #hInputFile, LOF(hInputFile), buffer$ CLOSE #hInputFile hOutPutFile = FREEFILE OPEN OutputFileName$ FOR BINARY AS #hOutputFile IF ERR THEN FUNCTION = ERR:EXIT FUNCTION buffer$ = Buffer$ + AddThis$ 'add new text to buffer PUT$ #hOutputFile, Buffer$ 'write buffer to new file IF ERR THEN FUNCTION = ERR:EXIT FUNCTION 'if err, set, exit function 'SEEK #hOutputFile, LEN(Buffer$) + 1 'not needed 'position to place end of file marker 'IF ERR THEN FUNCTION = ERR:EXIT FUNCTION 'not needed 'if err, set, exit function SETEOF #hOutputFile 'set end of file marker IF ERR THEN FUNCTION = ERR:EXIT FUNCTION 'if err, set, exit function CLOSE #hOutputfile 'close new file IF ERR THEN FUNCTION = ERR:EXIT FUNCTION 'if err, set, exit function END FUNCTION FUNCTION Exist(DirFileName AS STRING) AS LONG 'Semen exist function FUNCTION = GETATTR(DirFileName$): FUNCTION = (ERR = 0) END FUNCTION
[This message has been edited by Mike Doty (edited January 07, 2006).]
Leave a comment:
-
Hi Michael,
After posting my question I found the xcopy statement.
I am not completely sure about the syntax but would I use this it would perhaps look something like this:
Code:FOR j = 1 TO koersstringnr IF j = 1 THEN temp$ = "(c:\xcopy e:\FILES\*.prn " + gebruikkoersenmap$ + "\*.prn/v)" SHELL temp$ END IF OPEN gebruikkoersenmap$ + convarray2krsnamen$( j ) + ".PRN" FOR APPEND AS #1 PRINT #1, convarray2$( j ) CLOSE #1 NEXT j
Therefore I would very much prefer a smooth PB solution.
[This message has been edited by Erik Loef (edited January 06, 2006).]
Leave a comment:
-
Yes, very do-able.
Show what you have so far and someone will help you tune it up.
Leave a comment:
-
Open file, but write to another folder ?
I want to open a set of files in one folder, append a line of extra info and then write it to another folder, thus keeping the original files unchanged.
I have been thinking of using the shell and Dos copy statement.
However I would prefer handling things within PB, is this possible ?
------------------
Tags: None
Leave a comment: