Jump to content
Sign in to follow this  
lafafmentvotre

Batch to au3

Recommended Posts

lafafmentvotre

Hi everybody

First, sorry for my bad english.

I need to convert this batch in a au3 file :

@Echo off
Set "cmpn=7z#0 arj#4 bz2#2 bzip2#2 cab#7 cpio#12 deb#11 dmg#17 fat#21 gz#14 gzip#14 hfs#18 iso#8 lha#6 lzh#6 lzma#16 ntfs#22 rar#3 rpm#10 split#9 swm#15 tar#13 taz#5 tbz#2 tbz2#2 tgz#14 tpz#14 vhd#20 wim#15 xar#19 xz#23 z#5 zip#1"
For %%I In (%cmpn%) Do For /F "tokens=1* Delims=#" %%a In ("%%I") Do Call :ass_set %%a %%b
Exit

:ass_set
reg add "HKCR\.%1" /ve /t REG_SZ /d "7-Zip.%1" /f>Nul
reg add "HKCR\7-Zip.%1" /ve /t REG_SZ /d "%1 Archive" /f>Nul
reg add "HKCR\7-Zip.%1\DefaultIcon" /ve /t REG_SZ /d "%PROGRAMFILES%\7-Zip\7z.dll,%2" /f>Nul
reg add "HKCR\7-Zip.%1\shell" /ve /t REG_SZ /d "" /f>Nul
reg add "HKCR\7-Zip.%1\shell\open" /ve /t REG_SZ /d "" /f>Nul
reg add "HKCR\7-Zip.%1\shell\open\command" /ve /t REG_SZ /d "\"%PROGRAMFILES%\7-Zip\7zFM.exe\" \"%%1\"" /f>Nul
GoTo :EOF

I started this script but I can not interpret the rest "Do For /F "tokens=1* Delims=#" %%a In ("%%I") Do Call :ass_set %%a %%b"

#include <file.au3>
#include <Array.au3>

Local $arraylist=""
_FileReadToArray("Liste.txt", $arraylist)
_ArrayDisplay($arraylist)
For $i=1 to Ubound($arraylist)-1

Do For

My file "Liste.txt" contain :

7z#0

arj#4

...

zip#1

Is it possible to help me ?

Thanks

Share this post


Link to post
Share on other sites
hannes08

Hi lafafmentvotre,

#include <file.au3>
#include <Array.au3>

Dim $array
_FileReadToArray("Liste.txt", $array)

For $i=1 to $array[0]
    _do_something($array[$i])
Next

Func _do_something($input)
;Here comes your regadd ...
EndFunc

Regards,

Hannes


Regards,Hannes[spoiler]If you can't convince them, confuse them![/spoiler]

Share this post


Link to post
Share on other sites
lafafmentvotre

Hi Hannes

Thanks for response.

It works now

#include <file.au3>
#include <Array.au3>
Dim $array
Local $file=FileOpen('Liste.txt', 0)
For $i=1 To 33
$array=StringSplit(FileReadLine($file,$i),"#")
If @error = -1 Then ExitLoop
$archive_type=_ArrayToString($array, @TAB, 1, 1)
$switch=_ArrayToString($array, @TAB, 2, 2)
RegWrite("HKCR\."&$archive_type,"","REG_SZ",$archive_type&" Archive")
RegWrite("HKCR\."&$archive_type&"\DefaultIcon","","REG_SZ","C:\Program Files\7-Zip\7z.dll,"&$switch)
RegWrite("HKCR\."&$archive_type&"\shell","","REG_SZ","")
RegWrite("HKCR\."&$archive_type&"\shell\open","","REG_SZ","")
RegWrite("HKCR\."&$archive_type&"\shell\open\command","","REG_SZ","""C:\Program Files\7-Zip\7zFM.exe"" ""%1""")
Next
FileClose($file)

Share this post


Link to post
Share on other sites
hannes08

Hey lafafmentvotre,

you may want to consider using a while loop for the reading of the text file, just in case it changes sometimes...

so instead of:

#include <file.au3>
#include <Array.au3>
Dim $array
Local $file=FileOpen('Liste.txt', 0)
For $i=1 To 33
$array=StringSplit(FileReadLine($file,$i),"#")
If @error = -1 Then ExitLoop
$archive_type=_ArrayToString($array, @TAB, 1, 1)
$switch=_ArrayToString($array, @TAB, 2, 2)
RegWrite("HKCR\."&$archive_type,"","REG_SZ",$archive_type&" Archive")
RegWrite("HKCR\."&$archive_type&"\DefaultIcon","","REG_SZ","C:\Program Files\7-Zip\7z.dll,"&$switch)
RegWrite("HKCR\."&$archive_type&"\shell","","REG_SZ","")
RegWrite("HKCR\."&$archive_type&"\shell\open","","REG_SZ","")
RegWrite("HKCR\."&$archive_type&"\shell\open\command","","REG_SZ","""C:\Program Files\7-Zip\7zFM.exe"" ""%1""")
Next
FileClose($file)

Use:

#include <file.au3>
#include <Array.au3>
Dim $array
Local $file=FileOpen('Liste.txt', 0)
While 1
  $array=StringSplit(FileReadLine($file,$i),"#")
  If @error = -1 Then ExitLoop
  $archive_type=_ArrayToString($array, @TAB, 1, 1)
  $switch=_ArrayToString($array, @TAB, 2, 2)
  RegWrite("HKCR\."&$archive_type,"","REG_SZ",$archive_type&" Archive")
  RegWrite("HKCR\."&$archive_type&"\DefaultIcon","","REG_SZ","C:\Program Files\7-Zip\7z.dll,"&$switch)
  RegWrite("HKCR\."&$archive_type&"\shell","","REG_SZ","")
  RegWrite("HKCR\."&$archive_type&"\shell\open","","REG_SZ","")
  RegWrite("HKCR\."&$archive_type&"\shell\open\command","","REG_SZ","""C:\Program Files\7-Zip\7zFM.exe"" ""%1""")
Wend
FileClose($file)

Regards,

Hannes

:)


Regards,Hannes[spoiler]If you can't convince them, confuse them![/spoiler]

Share this post


Link to post
Share on other sites
lafafmentvotre

Doesn't work :

WARNING: $i: possibly used before declaration.

Share this post


Link to post
Share on other sites
Varian

$Extensions = StringSplit('7z#0,arj#4,bz2#2,bzip2#2,cab#7,cpio#12,deb#11,dmg#17,fat#21,gz#14,gzip#14,hfs#18,iso#8,lha#6,lzh#6,lzma#16,ntfs#22,rar#3,rpm#10,split#9,swm#15,tar#13,taz#5,tbz#2,tbz2#2,tgz#14,tpz#14,vhd#20,wim#15,xar#19,xz#23,z#5,zip#1', ',', 2)

For $Element In $Extensions
    $iIndex = StringRegExpReplace($Element, '^.+#', '')
    $Element = StringRegExpReplace($Element, '#.+$', '')
    RegWrite('HKCR\.' & $Element, '', 'REG_SZ', '7-Zip.' & $Element)
    RegWrite('HKCR\7-Zip.' & $Element, '', 'REG_SZ', $Element & ' Archive')
    RegWrite('HKCR\7-Zip.' & $Element & '\DefaultIcon', '', 'REG_SZ', @ProgramFilesDir & '\7-Zip\7z.dll,' & $iIndex)
    RegWrite('HKCR\7-Zip.' & $Element & '\shell', '', 'REG_SZ', '')
    RegWrite('HKCR\7-Zip.' & $Element & '\shell\open', '', 'REG_SZ', '')
    RegWrite('HKCR\7-Zip.' & $Element & '\shell\open\command', '', 'REG_SZ', '"' & @ProgramFilesDir & '\7-Zip\7zFM.exe" "%1"')
Next

Share this post


Link to post
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
Sign in to follow this  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.