OVH Cloud OVH Cloud

for each file in collect file sélectif

23 réponses
Avatar
---DGI972---
Bonjour messieurs,

Il me manque une routine en vbs:

C:\TOTO\TATA\AA\
C:\TOTO\TATA\BB\
C:\TOTO\TATA\CC\
Dans le sous répertoire AA
j'ai des fichiers AAxx.001,AAxx.002,AAxx.003 et AAxx.dat
Dans le sous répertoire BB
j'ai des fichiers BBxx.001,BBxx.002,BBxx.003 et BBxx.dat
etc..
je voudrais lire uniquement les *.dat dans tous les sous répertoire de
TOTO du genre:

Set fso = CreateObject("Scripting.fileSystemObject")
Set fsofolder = fso.GetFolder("c:\TOTO\")
Set collec_file = fsofolder.files
for each fic_file in collec_file
DO
lire chaque ligne de chaque fichier dat
end

merci d'avance pour un début de code trouvé sous le coude.

3 réponses

1 2 3
Avatar
---DGI972---
jbongran a formulé ce mercredi :
---DGI972--- wrote:
[...]
Sub Traitement(oFolder)
For Each oFile In oFolder.Files
If Right(oFile.Name, 3) = "dat" And Left(oFile.Name, 6) >> f_type Then
o_File.Copy ("C:TIP" & f_type & ".dat")
End If
Next
For Each oSubFolder in oFolder.SubFolders
Traitement oSubFolder
Next
End Sub

Traitement fso.GetFolder("C:EASYMIXDATAPACKAGE")


il sort d'où le o_File de o_File.Copy ("C:TIP" & f_type & ".dat") ?
Essaye en mettant Option Explicit (obligation de déclarer les variables avant
de pouvoir les utiliser) en début de script
Egalement, pour faire les debug, ne pas utiliser (lire mettre een
commentaire) les eventuels On Error ...

Voici le copier/coller de l'aide vbscript concernant la méthode copie:
Copie un fichier spécifié d'un emplacement à un autre.
object.Copy( destination[, overwrite] );
Arguments
object
Requis. Doit toujours correspondre au nom d'un objet File ou Folder.
destination
Requis. Emplacement de destination où le fichier doit être copié. Les
caractères génériques ne sont pas acceptés.
overwrite
Facultatif. Valeur booléenne qui est True (vraie) par défaut si les fichiers
ou les dossiers existants doivent être écrasés ; False (fausse) dans le cas
contraire.


merci,
effectivement j'avais une erreur de variable o_File,
(que j'avais déjà corrigé aprés le fil).
mais Idem.
Option Explicit , déja fait
object.Copy , je n'est pas le droit de faire oFile.Copy ("C:TIP" &
f_type & ".dat")?

pour Fred c'est quoi les tablettes ? (tablettes coco ?)

Salut


Avatar
---DGI972---
---DGI972--- a pensé très fort :
jbongran a formulé ce mercredi :
---DGI972--- wrote:
[...]
Sub Traitement(oFolder)
For Each oFile In oFolder.Files
If Right(oFile.Name, 3) = "dat" And Left(oFile.Name, 6) >>> f_type Then
o_File.Copy ("C:TIP" & f_type & ".dat")
End If
Next
For Each oSubFolder in oFolder.SubFolders
Traitement oSubFolder
Next
End Sub

Traitement fso.GetFolder("C:EASYMIXDATAPACKAGE")


il sort d'où le o_File de o_File.Copy ("C:TIP" & f_type & ".dat") ?
Essaye en mettant Option Explicit (obligation de déclarer les variables
avant de pouvoir les utiliser) en début de script
Egalement, pour faire les debug, ne pas utiliser (lire mettre een
commentaire) les eventuels On Error ...

Voici le copier/coller de l'aide vbscript concernant la méthode copie:
Copie un fichier spécifié d'un emplacement à un autre.
object.Copy( destination[, overwrite] );
Arguments
object
Requis. Doit toujours correspondre au nom d'un objet File ou Folder.
destination
Requis. Emplacement de destination où le fichier doit être copié. Les
caractères génériques ne sont pas acceptés.
overwrite
Facultatif. Valeur booléenne qui est True (vraie) par défaut si les
fichiers ou les dossiers existants doivent être écrasés ; False (fausse)
dans le cas contraire.


merci,
effectivement j'avais une erreur de variable o_File,
(que j'avais déjà corrigé aprés le fil).
mais Idem.
Option Explicit , déja fait
object.Copy , je n'est pas le droit de faire oFile.Copy ("C:TIP" & f_type &
".dat")?

pour Fred c'est quoi les tablettes ? (tablettes coco ?)

Salut


bon j'ai compris je suis allé à la librairie:
j'ai avheté Collection Resources Informatiques Windows Scripting Host
(WSH) Automatiser les tâches d'administration sous Windows 2000 et XP.
j'ai trouvé ce bout de code

Option Explicit
Dim Chemin

If WScript.Arguments.Unnamed.Length>0 Then
Chemin = WScript.Arguments.Unnamed.Item(0)
ElseIf InStr(1,WSCript.FullName, "cscript") > 0 Then
WScript.StdOut.WriteLine "Saisissez le chemin à explorer"
Chemin = WScript.StdIn.ReadLine
Else
Chemin = InputBox ("Saisissez le chemin à explorer²", "Exploration
Dossier")
End if

ExploreFolder Chemin, 1
WScript.Quit

Sub ExploreFolder (fld, Pas)
Dim fso, d
Dim sd, d1
Dim sf, f1

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

If fso.FolderExists (fld) Then
Set d = fso.GetFolder(fld)
WScript.Echo Space(Pas) & "|_" & " " & d.Name & " : "

Set sf = d.Files
For Each f1 in sf
WScript.Echo Space(Pas + 3) & "_" & " " & f1.name
Next

Set sd = d.SubFolders
For Each d1 in sd
ExploreFolder d1.Path, Pas + 1
Next

End If
End Sub

Donc la scrutation des répertoires et sous répertoire c'est réglé.
Mais la copie des fichiers trouvés ne fonctionne pas !!!!
ca m'énerve :-@

Voici mon code vbs de test
Option Explicit
Dim Chemin

Chemin = "C:EASYMIXDATAPACKAGE"

ExploreFolder Chemin, 1

WScript.Quit

Sub ExploreFolder (fld, Pas)
Dim fso, d
Dim sd, d1
Dim sf, f1,f_type

f_type = "TCH_AJ"
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

If fso.FolderExists (fld) Then
Set d = fso.GetFolder(fld) 'Tous les répertoires
Set sf = d.Files
For Each f1 in sf 'Tous les fichiers dans les répertoire'
' If Right(f1.name, 4) = ".dat" then 'And Left(f1.name, 6) =
f_type Then
' f1.Copy ("C:TIP" & f_type & ".dat")
WScript.Echo Space(Pas + 3) & "_Fichier" & " " & f1.name & " " &
Left(f1.name, 6) & " " & Right(f1.name, 3) 'pour tester les variables'
' End If
Next

Set sd = d.SubFolders
For Each d1 in sd
ExploreFolder d1.Path, Pas + 1
Next

End If
End Sub

Ce code scrute correctement tous les fichiers (la sortie WScript.Echo
me le prouve.Mais dés que je retire le commentaire pour faire la copie
je n'ai aucun echo ni de copie dans c:TIP.
Une idée SVP
moi je continue
Merci



Avatar
---DGI972---
---DGI972--- a pensé très fort :
jbongran a formulé ce mercredi :
---DGI972--- wrote:
[...]
Sub Traitement(oFolder)
For Each oFile In oFolder.Files
If Right(oFile.Name, 3) = "dat" And Left(oFile.Name, 6) >>>> f_type Then
o_File.Copy ("C:TIP" & f_type & ".dat")
End If
Next
For Each oSubFolder in oFolder.SubFolders
Traitement oSubFolder
Next
End Sub

Traitement fso.GetFolder("C:EASYMIXDATAPACKAGE")


il sort d'où le o_File de o_File.Copy ("C:TIP" & f_type & ".dat") ?
Essaye en mettant Option Explicit (obligation de déclarer les variables
avant de pouvoir les utiliser) en début de script
Egalement, pour faire les debug, ne pas utiliser (lire mettre een
commentaire) les eventuels On Error ...

Voici le copier/coller de l'aide vbscript concernant la méthode copie:
Copie un fichier spécifié d'un emplacement à un autre.
object.Copy( destination[, overwrite] );
Arguments
object
Requis. Doit toujours correspondre au nom d'un objet File ou Folder.
destination
Requis. Emplacement de destination où le fichier doit être copié. Les
caractères génériques ne sont pas acceptés.
overwrite
Facultatif. Valeur booléenne qui est True (vraie) par défaut si les
fichiers ou les dossiers existants doivent être écrasés ; False (fausse)
dans le cas contraire.


merci,
effectivement j'avais une erreur de variable o_File,
(que j'avais déjà corrigé aprés le fil).
mais Idem.
Option Explicit , déja fait
object.Copy , je n'est pas le droit de faire oFile.Copy ("C:TIP" & f_type
& ".dat")?

pour Fred c'est quoi les tablettes ? (tablettes coco ?)

Salut


bon j'ai compris je suis allé à la librairie:
j'ai avheté Collection Resources Informatiques Windows Scripting Host (WSH)
Automatiser les tâches d'administration sous Windows 2000 et XP.
j'ai trouvé ce bout de code

Option Explicit
Dim Chemin

If WScript.Arguments.Unnamed.Length>0 Then
Chemin = WScript.Arguments.Unnamed.Item(0)
ElseIf InStr(1,WSCript.FullName, "cscript") > 0 Then
WScript.StdOut.WriteLine "Saisissez le chemin à explorer"
Chemin = WScript.StdIn.ReadLine
Else
Chemin = InputBox ("Saisissez le chemin à explorer²", "Exploration Dossier")
End if

ExploreFolder Chemin, 1
WScript.Quit

Sub ExploreFolder (fld, Pas)
Dim fso, d
Dim sd, d1
Dim sf, f1

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

If fso.FolderExists (fld) Then
Set d = fso.GetFolder(fld)
WScript.Echo Space(Pas) & "|_" & " " & d.Name & " : "

Set sf = d.Files
For Each f1 in sf
WScript.Echo Space(Pas + 3) & "_" & " " & f1.name
Next

Set sd = d.SubFolders
For Each d1 in sd
ExploreFolder d1.Path, Pas + 1
Next

End If
End Sub

Donc la scrutation des répertoires et sous répertoire c'est réglé.
Mais la copie des fichiers trouvés ne fonctionne pas !!!!
ca m'énerve :-@

Voici mon code vbs de test
Option Explicit
Dim Chemin

Chemin = "C:EASYMIXDATAPACKAGE"

ExploreFolder Chemin, 1

WScript.Quit

Sub ExploreFolder (fld, Pas)
Dim fso, d
Dim sd, d1
Dim sf, f1,f_type

f_type = "TCH_AJ"
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

If fso.FolderExists (fld) Then
Set d = fso.GetFolder(fld) 'Tous les répertoires
Set sf = d.Files
For Each f1 in sf 'Tous les fichiers dans les répertoire'
' If Right(f1.name, 4) = ".dat" then 'And Left(f1.name, 6) = f_type Then
' f1.Copy ("C:TIP" & f_type & ".dat")
WScript.Echo Space(Pas + 3) & "_Fichier" & " " & f1.name & " " &
Left(f1.name, 6) & " " & Right(f1.name, 3) 'pour tester les variables'
' End If
Next

Set sd = d.SubFolders
For Each d1 in sd
ExploreFolder d1.Path, Pas + 1
Next

End If
End Sub

Ce code scrute correctement tous les fichiers (la sortie WScript.Echo me le
prouve.Mais dés que je retire le commentaire pour faire la copie je n'ai
aucun echo ni de copie dans c:TIP.
Une idée SVP
moi je continue
Merci


C'est bon j'ai laissé tombé.
merci quand même, j'ai apris de nouvelles choses.




1 2 3