Trong Posted July 6, 2021 Share Posted July 6, 2021 (edited) Running it directly without going through cmd.exe is no problem. Local $sCommand = '"' & @ScriptDir & '\SumatraPDF-3.2-64.exe' & '"' &' -print-to "RICOH SP 210 NET" -print-settings "fit,paper=A4" -silent -exit-when-done "D:\_Work_\AutoPrint\BG_00.pdf"' Run($sCommand, '', @SW_HIDE) But I need to get error information ! I don't know where I am wrong, can you help me see where the problem lies? Error: 'D:\_Work_\AutoPrint\SumatraPDF-3.2-64.exe" -print-to "RICOH' is not recognized as an internal or external command, operable program or batch file. Script: expandcollapse popup#include <File.au3> If @OSArch = "X64" And Not @AutoItX64 Then _Wow64FsRedirection(0) Local $sCommand = '"' & @ScriptDir & '\SumatraPDF-3.2-64.exe' & '"' &' -print-to "RICOH SP 210 NET" -print-settings "fit,paper=A4" -silent -exit-when-done "D:\_Work_\AutoPrint\BG_00.pdf"' _StreamCMD($sCommand) ;_RunCmd_GetOutput($sCommand) Func _RunCmd_GetOutput($sCommand) ConsoleWrite("> Execute: " & $sCommand & @CRLF) ConsoleWrite("! Full CMD: " & '"' & @ComSpec & '" /c ' & $sCommand & @CRLF) Local $sOutput = '', $iPID = Run('"' & @ComSpec & '" /c ' & $sCommand, '', @SW_HIDE, 0x6) Do $sOutput &= StdoutRead($iPID) Until @error Do $sOutput &= StderrRead($iPID) Until @error ConsoleWrite($sOutput & @CRLF) Return $sOutput EndFunc ;==>_RunCmd_GetOutput Func _StreamCMD($sCMD, $sCallBackFunction = Default, $WorkingDir = Default, $iStreamType = Default, $iShowFlag = Default, $iDelay = Default) If StringStripWS($sCMD, 8) = "" Then Return "" If $sCallBackFunction = Default Then $sCallBackFunction = "ConsoleWrite" ;~ If $WorkingDir = Default Then $WorkingDir = @SystemDir ;@WindowsDir & '\System32' If $WorkingDir = Default Then $WorkingDir = @WindowsDir & '\System32' If $iStreamType = Default Then $iStreamType = $STDERR_CHILD + $STDOUT_CHILD If $iShowFlag = Default Then $iShowFlag = False If $iDelay = Default Then $iDelay = 250 ConsoleWrite("> Execute: " & $sCMD & @CRLF) Local $sTMP = '', $sSTD = '', $sCOM = '"' & @WindowsDir & '\System32\cmd.exe"' & ' /c ' & $sCMD ;~ Local $sTMP = '', $sSTD = '', $sCOM = @ComSpec & ' /c ' & $sCMD ConsoleWrite("! Full CMD: " & $sCOM & @CRLF) Local $iWin = $iShowFlag ? @SW_SHOW : @SW_HIDE Local $iPID = Run($sCOM, $WorkingDir, $iWin, $iStreamType) While 1 $sTMP = StdoutRead($iPID, False, False) If @error Then ExitLoop If $sTMP <> "" Then $sTMP = StringReplace($sTMP, @CR & @CR, '') $sSTD &= $sTMP Call($sCallBackFunction,$sTMP) ;~ ConsoleWrite($sTMP) Sleep($iDelay) EndIf WEnd While 1 $sTMP = StderrRead($iPID, False, False) If @error Then ExitLoop If $sTMP <> "" Then $sTMP = StringReplace($sTMP, @CR & @CR, '') $sSTD &= $sTMP Call($sCallBackFunction,$sTMP) ;~ ConsoleWrite($sTMP) Sleep($iDelay) EndIf WEnd ;~ If $sSTD <> "" Then ConsoleWrite(@CRLF) Return SetError(@error, @extended, $sSTD) EndFunc ;==>_StreamCMD ; * -----:| Dao Van Trong - TRONG.WIN Func _Wow64FsRedirection($state) If @OSArch = "X64" Then If $state Then ;DllCall("kernel32.dll", "int", "Wow64EnableWow64FsRedirection", "int", 1) DllCall("kernel32.dll", "int", "Wow64RevertWow64FsRedirection", "int", 0) Else ;DllCall('kernel32.dll', 'boolean', 'Wow64EnableWow64FsRedirection', 'boolean', False) DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "int", 0) EndIf If @error Then Return SetError(1, 0, 0) Return 1 EndIf EndFunc ;==>_Wow64FsRedirection Log: >"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "D:\_Work_\AutoPrint\_AutoPrint.au3" /UserParams +>09:26:48 Starting AutoIt3Wrapper (21.316.1639.1) from:SciTE.exe (4.4.6.0) Keyboard:00000409 OS:WIN_10/2009 CPU:X64 OS:X64 Environment(Language:0409) CodePage:0 utf8.auto.check:4 +> SciTEDir => C:\Program Files (x86)\AutoIt3\SciTe UserDir => C:\Users\Trong\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\Trong\AppData\Local\AutoIt v3\SciTE >Running AU3Check (3.3.15.4) from:C:\Program Files (x86)\AutoIt3 input:D:\_Work_\AutoPrint\_AutoPrint.au3 +>09:26:48 AU3Check ended.rc:0 >Running:(3.3.15.4):C:\Program Files (x86)\AutoIt3\autoit3.exe "D:\_Work_\AutoPrint\_AutoPrint.au3" +>Setting Hotkeys...--> Press Ctrl+Alt+Break to Restart or Ctrl+BREAK to Stop. > Execute: "D:\_Work_\AutoPrint\SumatraPDF-3.2-64.exe" -print-to "RICOH SP 210 NET" -print-settings "fit,paper=A4" -silent -exit-when-done "D:\_Work_\AutoPrint\BG_00.pdf" ! Full CMD: "C:\WINDOWS\System32\cmd.exe" /c "D:\_Work_\AutoPrint\SumatraPDF-3.2-64.exe" -print-to "RICOH SP 210 NET" -print-settings "fit,paper=A4" -silent -exit-when-done "D:\_Work_\AutoPrint\BG_00.pdf" 'D:\_Work_\AutoPrint\SumatraPDF-3.2-64.exe" -print-to "RICOH' is not recognized as an internal or external command, operable program or batch file. +>09:26:49 AutoIt3.exe ended.rc:0 +>09:26:49 AutoIt3Wrapper Finished. >Exit code: 0 Time: 1.71 Thanks Edited July 6, 2021 by VIP Regards, Link to comment Share on other sites More sharing options...
argumentum Posted July 6, 2021 Share Posted July 6, 2021 (edited) try Local $sCommand = '"" "' & @ScriptDir & '\SumatraPDF-3.2-64.exe' & '"' Those extra " may do the trick with cmd.exe. Let me know. Edit: also https://www.autoitscript.com/forum/topic/139260-autoit-snippets/?do=findComment&comment=1478119 may be useful. Edited July 6, 2021 by argumentum Trong 1 Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting. Link to comment Share on other sites More sharing options...
Subz Posted July 6, 2021 Share Posted July 6, 2021 (edited) You need to escape your first quote Local $sCommand = '^"' & @ScriptDir etc... A double quote also appear to work, I believe this is what @argumentum meant above. Local $sCommand = '""' & @ScriptDir etc... Edited July 6, 2021 by Subz Trong, SkysLastChance, jchd and 1 other 3 1 Link to comment Share on other sites More sharing options...
Trong Posted July 6, 2021 Author Share Posted July 6, 2021 Thanks for the help guys. But I don't really understand why is that? It must be a cmd or AutoIT bug? The script worked: Local $sCommand = '""' & @ScriptDir & '\SumatraPDF-3.2-64.exe' & '"' &' -print-to "RICOH SP 210 NET" -print-settings "fit,paper=A4" -silent -exit-when-done "D:\_Work_\AutoPrint\BG_00.pdf"' > Execute: ""D:\_Work_\AutoPrint\SumatraPDF-3.2-64.exe" -print-to "RICOH SP 210 NET" -print-settings "fit,paper=A4" -silent -exit-when-done "D:\_Work_\AutoPrint\BG_00.pdf" ! Full CMD: "C:\WINDOWS\System32\cmd.exe" /c ""D:\_Work_\AutoPrint\SumatraPDF-3.2-64.exe" -print-to "RICOH SP 210 NET" -print-settings "fit,paper=A4" -silent -exit-when-done "D:\_Work_\AutoPrint\BG_00.pdf" Regards, Link to comment Share on other sites More sharing options...
Solution argumentum Posted July 6, 2021 Solution Share Posted July 6, 2021 (edited) Run(@ComSpec & ' /c "title this is the new title"&&dir&&pause') Is not an AutoIt bug. Is a cmd.exe (buggy)feature to add a title. =/ I've had these problems before and that's how I know of the solution. That I did not know was about the ^ use. Edited July 6, 2021 by argumentum Subz, jchd and Trong 3 Follow the link to my code contribution ( and other things too ). FAQ - Please Read Before Posting. Link to comment Share on other sites More sharing options...
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