2013-11-13 7 views
1

У меня возникли проблемы с запуском .bat-файла из доступа. Создается файл .bat, журнал создается (в нем ничего нет), файл .bat запускается, когда я нажимаю на него в проводнике Windows, я просто не могу заставить его запускаться с помощью команды .RUN.Запуск .BAT-файла из Access

sFTP = "ftp -s:FTPCMD.TXT > Z:\Recon\FTPUtilSrc\ftprslt.txt" 
Open sFileName For Output As #2 
Print #2, sFTP 
'Print #2, "EXIT" 
Close #2 
oShell.Run sFileName, 0, True  

Edit:

sFileName = "Z:\Recon\FTPUtilSrc\MYFTP.BAT" 
sFTP = "ftp -s:FTPCMD.TXT > Z:\Recon\FTPUtilSrc\ftprslt.txt" 
Open sFileName For Output As #2 
Print #2, sFTP 
Print #2, "EXIT" 
Close #2 
oShell.run sFileName, 0, True 

ответ

0

Попробуйте изменить пару вещей, чтобы увидеть, что происходит:

sFileName = "Z:\Recon\FTPUtilSrc\MYFTP.BAT" 
sFTP = "ftp -s:FTPCMD.TXT > Z:\Recon\FTPUtilSrc\ftprslt.txt" 
Open sFileName For Output As #2 
Print #2, sFTP 
Print #2, "PAUSE" 'PAUSE forces the command prompt window to stay open. This temporarily allows you to see if there are any issues with the ftp statment. 
Close #2 
oShell.run sFileName, 0, True '3 is "Activates the window and displays it as a maximized window." according to msdn. This will allow you to see the execution of the ftp statment 

Смотрите, если эти изменения помогите вам определить проблему, чтобы вы могли ее изменить назад. Кстати, я протестировал код, выполнив следующее, и он работал как ожидалось, что заставляет меня думать, что это проблема с командой ftp.

Public Sub TestBat() 
    Set oShell = CreateObject("WScript.Shell") 
    sFileName = "C:\Temp\MYECHO.bat" '"Z:\Recon\FTPUtilSrc\MYFTP.BAT" 
    sFTP = "echo ""hi"" > C:\Temp\test.txt" '"ftp -s:FTPCMD.TXT > Z:\Recon\FTPUtilSrc\ftprslt.txt" 
    Open sFileName For Output As #2 
    Print #2, sFTP 
    Print #2, "PAUSE" 
    Close #2 
    oShell.Run sFileName, 3, True 
End Sub 
+0

Спасибо, что команда Pause помогла много. Он ищет мой пакетный файл на диске, когда он находится на диске Z. Это исправило это. Благодаря! – user2183985

1

Дайте это попробовать:

Dim cmd_str As String 
cmd_str = "cmd.exe /C ftp -s:FTPCMD.TXT > Z:\Recon\FTPUtilSrc\ftprslt.txt" 
Call Shell(cmd_str, vbNormalFocus) 
+0

Я думаю, что это близко, но все еще делает то же самое. Нужно ли добавлять путь к файлу .bat? Он создает файл ftprslt.txt, но не работает .bat – user2183985

+0

@ user2183985 Извините, я думаю, что неправильно понял часть этого. Где вы определяете путь к пакетному файлу в своем скрипте. Также стоит добавить инструкцию печати для пути, чтобы просто проверить, как это происходит. – ChrisProsser

+0

Код Криса запускает ftp-dump напрямую, не используя пакетный файл ... зачем он нужен для запуска из пакетного файла? – Blackhawk

Смежные вопросы