run awk95 using Shell()

L

L Mehl

I have an awk script to process a text file before importing it. The script
strips rows from the text file after hitting a line containing only " ".

This works from the DOS prompt in c:\filepath\:
c:\filepath\awk95 "/^ $/{nextfile} 1" c:\filepath\input.txt >
c:\filepath\output.text

The following does not work:
strAWKCommandLine = _
"c:\filepath\awk95 " & Chr(34) & "/^ $/{nextfile} 1" & Chr(34) & "
c:\filepath\input.txt > c:\filepath\output.text"

Shell(strAWKCommandLine,1)

Another question:
While debugging this, how can I keep the DOS window open so I can see any
error messages?

An example I saw used "/k" :
Shell(Environ$("comspec") & " /k yourfile.bat", vbNormalFocus)

I can't get that code structure to work.

Thanks for any help on using Shell or keeping the DOS window open

Larry Mehl
 
S

shockley

Larry,

This worked for me:

Put "input.txt" and "awk.exe" in the root directory of C:
Put these lines in a .bat file called "awk.bat" and put the bat file in the
root directory of C:

C:
cd\
awk95 "/^ $/{nextfile} 1" input.txt > output.txt

Then make a macro with these lines and run it:

Sub Tester()
ChDrive "C"
ChDir "C:\"
Shell ("awk.bat")
End Sub

(But you really don't need to do this strip operation).

HTH,
Shockley
 
L

L Mehl

Shockley --

Thank you for reminding me of that technique.

My names "input.txt" and "output.txt" will change, depending on a user
selection, so I will revise your suggestion slightly, by writing the bat
file in my code for each different user selection, and then running it from
the code.

I appreciate your help in this project.

Larry
 
S

shockley

Larry,

It may help you to know that you can variablize the input/output filenames
and change the bat file programatically in vba by doing something like:

Sub WriteBat()
ChDrive "C"
sInputFileName = "Input1.txt"
sOutputFileName = "Output1.txt"
sBat = _
"C:" & vbCrLf & _
"cd\" & vbCrLf & _
"awk95 " & Chr(34) & "/^ $/{nextfile} 1" & Chr(34) & _
" " & sInputFileName & " > " & sOutputFileName

Open "C:\awk.bat" For Output As #1
Print #1, sBat
Close #1
End Sub

Regards,
Shockley
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top