Je suis entrain de faire un script batch pour un traitement par lot pour la conversion des fichiers de type .m3u en .lst et en .cfg, alors, j'ai fait déjà un vbscript pour traiter un seul fichier par glisser et déposer ( Drag and Drop) et ça marche bien
Maintenant mon soucis dans ce batch : Comment détecter si on glisse seulement un dossier et non pas un fichier pour le traitement :

Le Batch : Conversion_par_Dossier
Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@ECHO OFF
Title Conversion des fichiers de type .m3u en .lst et en .cfg by HACKOO
Mode con cols=70 lines=5
color 0A 
IF [%1] EQU [] Goto:Error
echo.
CD /D "%~1"
FOR %%f IN (*.m3u) DO (echo. & echo           Conversion du fichier "%%f" ... & Cscript /NoLogo %~dp0Convert_m3u-lst-cfg.vbs "%%f" & Cls & echo.)
Start "" explorer "%~1"
Exit
 
:Error
Color 0c
echo.
ECHO    Il faut glisser et deposer un dossier sur ce programme batch 
Timeout /T 6 /NoBreak >nul
Exit

Le vbscript : Convert_m3u-lst-cfg.vbs

Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
Option Explicit
Const Titre = "Conversion des fichiers de type .m3u en .lst et en.cfg by © HACKOO"
Const ForReading = 1
Const ForWriting = 2
Const TriStateUseDefault = -2
Const StartTagName = "<servername=>"
Const EndTagName = "</servername>"
Const StartserveurURL = "<serverurl=>"
Const EndserveurURL = "</serverurl>"
Const category = "<servercategory=>movies</servercategory>"
Dim sInfile,sOutfile,oFSO,oInfile,oOutfile,Texte,Folder,Ws,MyDirectory,FileM3UConverted
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set Ws = CreateObject("Wscript.Shell")
MyDirectory = oFSO.GetParentFolderName(WScript.ScriptFullName)
'****************************1ère étape : Formater le fichier.m3u déposé, càd enlever toutes les lignes vides***********************************
' Obtenir le nom du fichier d'entrée de ligne de commande , si le 2ème paramètre est entré
' utiliser le deuxième paramètre en tant que nouveau fichier de sortie, sinon réécriture du fichier d'entrée
If (WScript.Arguments.Count > 0) Then
    sInfile = WScript.Arguments(0)
        If LCase(oFSO.GetExtensionName(sInfile)) <> "m3u" Then 
            MsgBox "Faites glisser et déposer le fichier.m3u à convertir sur ce script",vbExclamation,Titre
            Wscript.Quit()
        End If    
Else
    MsgBox "Faites glisser et déposer le fichier.m3u à convertir sur ce script",vbExclamation,Titre
    WScript.Quit
End If
If (WScript.Arguments.Count > 1) Then
    sOutfile = WScript.Arguments(1)
Else
    sOutfile = sInfile
End If
' Lire le fichier en entré dans une variable puis fermetrure de ce dernier
Folder = GetFilenameWithoutExtension(sInfile) & "_Hackoo-Conversion"
 
If Not oFSO.FolderExists(Folder) Then
    oFSO.CreateFolder(Folder)
End If    
FileM3UConverted = Folder & "\" & GetName(Folder) &".m3u"
'wscript.echo sInfile
Set oInfile = oFSO.OpenTextFile(sInfile, ForReading, False, TriStateUseDefault)
Set oOutfile = oFSO.OpenTextFile(FileM3UConverted, ForWriting, True) 
 
While Not oInfile.AtEndOfStream
    Texte = oInfile.ReadLine
    Texte = Trim(Texte)
    If ( Len(Texte) > 0 ) Then
        oOutfile.Writeline Texte
    End If
Wend
oOutfile.Close
Set oOutfile = Nothing
'*****************************2ème étape : Extraire les lignes depuis le fichier formaté .m3u vers un fichier.lst******************************
Dim strLine,Tab,strNewcontents,i,k,Count,Name,URL,Ligne,sOutfileCfg
sInfile = FileM3UConverted
sOutfile = GetFilenameWithoutExtension(sInfile) & ".lst" 
sOutfileCfg = GetFilenameWithoutExtension(sInfile) & ".cfg"
If oFSO.FileExists(sOutfile) Then
    oFSO.DeleteFile(sOutfile)
End If
Set oInfile = oFSO.OpenTextFile(sInfile, ForReading, False, TriStateUseDefault)
oInfile.SkipLine()
Do Until oInfile.AtEndOfStream
    strLine = oInfile.Readline
    strLine = Trim(strLine)
    If Len(strLine) > 0 Then
        strNewcontents = Replace(strNewcontents,"#EXTINF:-1,","")
        strNewcontents = Replace(strNewcontents,"#EXTINF:0,","")
        strNewcontents = Replace(strNewcontents,"#EXTINF:0 ","")
        strNewcontents = Replace(strNewcontents,"#EXTINF:-1 ","")
        strNewContents = strNewContents & strLine & vbCrLf
    End If
Loop
oInfile.Close
Count = 0
Tab = split(strNewcontents,vbcrlf)
For i = lbound(Tab) to ubound(Tab) Step 2
    If i Mod 2 = 0 then
        Count = Count + 1
        Name = Trim(Tab(i))
        k = i+1
        If k > UBound(tab) Then Exit For
        URL = Tab(k)
    End If    
    Ligne = StartTagName & Name & EndTagName & StartserveurURL & URL & EndserveurURL & category
    Call WriteLog(Ligne,sOutfile)
    Call WriteLog("I: " & URL & " " & Name,sOutfileCfg)
Next
Ws.Popup "La conversion du fichier  "& vbCrLf &  DblQuote(sInfile) & vbCrLf & " est terminé avec succès !","2",Titre,64
'MsgBox "La conversion du fichier " & vbCrLf &  DblQuote(sInfile) & vbCrLf & " est terminé avec succès !",vbInformation,Titre
'**********************************************************************************************
'Fonction pour écrire le résultat dans un fichier texte
Sub WriteLog(strText,LogFile)
    Dim fs,ts 
    Const ForAppending = 8
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set ts = fs.OpenTextFile(LogFile,ForAppending,True)
    ts.WriteLine strText
    ts.Close
End Sub
'**********************************************************************************************
Function DblQuote(Str)
    DblQuote = Chr(34) & Str & Chr(34)
End Function
'**********************************************************************************************
Function GetFilenameWithoutExtension(ByVal FileName)
  Dim Result, i
  Result = FileName
  i = InStrRev(FileName, ".")
  If ( i > 0 ) Then
    Result = Mid(FileName, 1, i - 1)
  End If
  GetFilenameWithoutExtension = Result
End Function
'**********************************************************************************************
Function GetName(Path)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
GetName = fso.GetBaseName(path)
End Function
'**********************************************************************************************