MSAccess VBA Shell Command - Max Length?
17:43 28 Feb 2017

I've been tearing my hair out this afternoon. From Access VBA I've been issuing a Command line via a shell to FTP a file to a 3rd party server using cURL.exe.

Things were working great until I brought my code to production where it is now failing silently. I suspect the multiple unpredictable file paths producing "strCmd" are just too long to pass thru the Command shell. >> Is there a limit? <<

fShellRun (strCmd)

curl -k -T testfile.txt --ftp-ssl --ftp-pasv -u "username\$domain:password" ftp://ftp-domain.egnyte.com/Shared/testdirectory/

This is the Shell function I am using (not mine):

Function fShellRun(sCommandStringToExecute)

Dim oShellObject, oFileSystemObject, sShellRndTmpFile
Dim oShellOutputFileToRead, iErr

Set oShellObject = CreateObject("Wscript.Shell")
Set oFileSystemObject = CreateObject("Scripting.FileSystemObject")

sShellRndTmpFile = oShellObject.ExpandEnvironmentStrings("%temp%") & oFileSystemObject.GetTempName
On Error Resume Next
oShellObject.Run sCommandStringToExecute & " > " & sShellRndTmpFile, 0, True
iErr = Err.Number

'~on error goto 0
If iErr <> 0 Then
    fShellRun = ""
    Exit Function
End If

'~on error goto err_skip
fShellRun = oFileSystemObject.OpenTextFile(sShellRndTmpFile, 1).ReadAll
oFileSystemObject.DeleteFile sShellRndTmpFile, True

Exit Function

err_skip:
fShellRun = ""
oFileSystemObject.DeleteFile sShellRndTmpFile, True

End Function

I am noticing strCmd longer than ~200 chars fails silently.

Questions:

  1. Is there a string length limit using a command shell?

  2. How might I circumvent this limit?

Thanks!

Edit: The long command string (copy/paste from debug.print) works just fine in an open command window. Leads me to think there is an issue with the shell command itself. (?)

shell ms-access command-line