Jump to content

Recommended Posts

Posted (edited)

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
Posted

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

  • Moderators
Posted (edited)

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

 

Posted

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

Posted (edited)

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
  • Moderators
Posted (edited)

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

 

Posted (edited)

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

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
×
×
  • Create New...