March 05, 2021, 07:29:19 AM

Author Topic: [bb] reformat path in dos 8.3 style by ford escort [ 1+ years ago ]  (Read 620 times)

Offline BlitzBot

Title : reformat path in dos 8.3 style
Author : ford escort
Posted : 1+ years ago

Description : dos .bat files can't reach the 'program files' folder for example , this function rename the long filename in the path with the "~1" stuff.
the function check if the final file is reachable or modify the "~1" in ~2 ~3 etc while it's reachable in case or some folder starts with the sames 6 ascii codes


Code :
Code: BlitzBasic
  1. Dim value(0)
  2. ;
  3. ;this function return a path in dos 8.3 format
  4. ;addin the unfamous ~1 stuff in the path
  5. ;
  6. Function shorten$(pa$)
  7. spat$=""
  8. part$=""
  9. For az=1 To Len(pa$)
  10.         Select Mid$(pa$,az,1)
  11.                 Case ""
  12.                         If Len(part$)>8
  13.                
  14.         part$=Left$(part$,6)+"~1"+""
  15.                         Else
  16.                                 part$=part$+"" 
  17.                         EndIf
  18.                         spat$=spat$+part$                      
  19.                         part$=""
  20.                 Case "."
  21.                         If Len(part$)>8
  22.                                 part$=Left$(part$,6)+"~1"+"."
  23.                         Else
  24.                                 part$=part$+"."
  25.                         EndIf
  26.                         spat$=spat$+part$
  27.                         part$=""
  28.                 Default
  29.                         part$=part$+Mid$(pa$,az,1)
  30.                 End Select
  31. Next
  32. If Len(part$)>8
  33.         part$=Left$(part$,6)+"~1"
  34. EndIf
  35. spat$=spat$+part$
  36. If FileType(spat$)=0
  37. For az=1 To Len(spat$)
  38.         If Mid$(spat$,az,2)="~1"
  39.                 pos$=pos$+Chr$(az)
  40.         EndIf
  41. Next
  42. Dim value(Len(pos$))
  43. Repeat
  44. value(0)=10
  45. For va=1 To Len(pos$)
  46.         If value(va-1)=10
  47.                 value(va)=value(va)+1
  48.                 value(va-1)=1
  49.         EndIf
  50. Next
  51. For ch=1 To Len(pos$)
  52. di$=Left$(spat$,Asc(Mid$(pos$,ch,1))-1)+"~"+Str$(value(ch))+""+Right$(spat$,Len(spat$)-(Asc(Mid$(pos$,2,1))+2))
  53. Print di$
  54. Next
  55. Until FileType(di$)<>0
  56. Return di$
  57. EndIf
  58. Return spat$
  59. End Function


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal