Jump to content

Cmd space issues


Recommended Posts

Ok ive been messing with this bit of code for ages and cant see where its going wrong.

Func _Archive_1()
    $aRarFile = _RecFileListToArray(@ScriptDir, "*.rar|*.part*", 1, 0)
;~  _ArrayDisplay($aRarFile, ".Rar Files")
    If IsArray($aRarFile) Then
        For $i = 1 To $aRarFile[0]
;~          If $RarExist = True Then
                $ArchiveTest = RunWait(@ComSpec & ' /k ' & '"' & "C:\Program Files (x86)\WinRAR\WinRAR.exe" & '"' & ' x ' & $aRarFile[$i], "", @SW_SHOW) ; -y -ibck
;~          EndIf
        Next
    EndIf
    Sleep(200)
EndFunc   ;==>_Archive_1

This should unpack a rar single volume but it doesn't when the filename has a space in it i.e. "single archive.rar"

Ive tried as many combibnations as i can think of and it works everytime if you remove the space and fails when the name has a space

If i do this

$ArchiveTest = RunWait(@ComSpec & ' /k ' & '"' & "C:\Program Files (x86)\WinRAR\WinRAR.exe" & '"' & ' x ' & '"' & $aRarFile[$i] & '"', "", @SW_SHOW)

It throws the Program files space error if i try and wrap the whole thing it either says archive not found or x.rar is not a valid archive etc(dunno where its getting the .rar part from)

Ive aso tried making the array to a string but it still errors

Can anyone suggest the way to solve this?

Edited by Chimaera
Link to comment
Share on other sites

To debug try outputting to ConsoleWrite to see if the quotes are in-lined correctly.

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

  • Moderators

Chimaera,

Running a couple of ConsoleWrite lines should explain why: ;)

Global $aRarFile[1] = ["single archive.rar"]

; Works
ConsoleWrite(@ComSpec & ' /k ' & '"' & "C:\Program Files (x86)\WinRAR\WinRAR.exe" & '"' & ' x ' & '"' & $aRarFile[0] & '"' & @CRLF)

; Does not
ConsoleWrite(@ComSpec & ' /k ' & '"' & "C:\Program Files (x86)\WinRAR\WinRAR.exe" & '"' & ' x ' & $aRarFile[0] & @CRLF)
M23

Edit: I see guinness haad the same idea - but was feeling lazy! :P

Edited by Melba23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Nah, I was doing something else. Chimaera should understand how to do it anyway.

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

Edit: How can I post this with syntax highlighting... the AutoIt button isn't doing it.

Why not use Chr(34)?

 $ArchiveTest = RunWait (@ComSpec & " /k " & Chr(34) & "C:\Program Files (x86)\WinRAR\WinRAR.exe" & Chr(34) & " x " & Chr(34) & $aRarFile[$i] & Chr(34), "", @SW_SHOW)
Edited by Melba23
Fixed tags
Link to comment
Share on other sites

Which gives me this if i use the Works example from Melba

C:Windowssystem32cmd.exe /k "C:Program Files (x86)WinRARWinRAR.exe" x "1"

So at a guess the IsArray is providing me with the wrong output (well right from its point of view)

Ill run some more tests

Edit when i changed it to $i instead of 0 it gave

C:Windowssystem32cmd.exe /k "C:Program Files (x86)WinRARWinRAR.exe" x "single archive.rar"

and Tripredacus example produces the same

And the error they both give is

'C:Program' is not recognized as an internal or external command,
operable program or batch file.

Edited by Chimaera
Link to comment
Share on other sites

  • Moderators

Chimaera,

Those lines are from your OP - you are not using the same syntax in the 2 lines which is why it does not work. Look at the output and then the syntax - you are missing a couple of double-quotes in the one which does not work because it stops at the first space in the filename. ;)

M23

Edited by Melba23
Particularly dyslexic fingers today!

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

this is the latest ive tried with multiple types

and it still will not unpack

Func _Archive_1()
    $aRarFile = _RecFileListToArray(@ScriptDir, "*.rar|*.part*", 1, 0)
;~  _ArrayDisplay($aRarFile, ".Rar Files")
    If IsArray($aRarFile) Then
        For $i = 1 To $aRarFile[0]
;~          If $RarExist = True Then
                            ConsoleWrite(@ComSpec & ' /k ' & '"' & "C:\Program Files (x86)\WinRAR\WinRAR.exe" & '"' & ' x ' & $aRarFile[$i] & @CRLF)
                            ConsoleWrite(@ComSpec & ' /k ' & '"' & "C:\Program Files (x86)\WinRAR\WinRAR.exe" & ' x ' & $aRarFile[$i] & '"' & @CRLF)
                            ConsoleWrite(@ComSpec & ' /k ' & '"' & "C:\Program Files (x86)\WinRAR\WinRAR.exe" & '"' & ' x ' & '"' & $aRarFile[$i] & '"' & @CRLF)
                $ArchiveTest = RunWait(@ComSpec & ' /k ' & '"' & "C:\Program Files (x86)\WinRAR\WinRAR.exe" & '"' & ' x ' & '"' & $aRarFile[$i] & '"', "", @SW_SHOW) ; -y -ibck
;~          EndIf
        Next
    EndIf
    Sleep(200)
EndFunc   ;==>_Archive_1

and this is the output

C:\Windows\system32\cmd.exe /k "C:\Program Files (x86)\WinRAR\WinRAR.exe" x single archive.rar
C:\Windows\system32\cmd.exe /k "C:\Program Files (x86)\WinRAR\WinRAR.exe x single archive.rar"
C:\Windows\system32\cmd.exe /k "C:\Program Files (x86)\WinRAR\WinRAR.exe" x "single archive.rar"

It should work on that last one... unless im really not seeing the problem

Ok more tries later and this did work

$ArchiveTest = RunWait(@ComSpec & ' /k ' & '""' & "C:\Program Files (x86)\WinRAR\WinRAR.exe" & '"' & ' x ' & '"' & $aRarFile[$i] & '""', "", @SW_SHOW)

I dont understand how adding an extra " at the front and back within a '"' would work but ill run some tests

and yet it still gives only single cover for the items

C:\Windows\system32\cmd.exe /k "C:\Program Files (x86)\WinRAR\WinRAR.exe" x "single archive.rar"
Edited by Chimaera
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...