if not existe file then nomfile>> un fichier

Le
big
Bonjour,
je cherche un bout de code qui vérifie l'existance d'un fichier , et si il
n'existe pas son nom sera écrit dans un fichier.
J'ai essayé cela
if not exist monfichier1.log then echo 'monfichier.log' >>
fichier_manquant.txt
Mais cela ne marche pas.
Voulez-vous m'aider ?
D'avance merci.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles LAURENT
Le #739671
"big" news:
| Bonjour,

Bonjour,

| je cherche un bout de code qui vérifie l'existance d'un fichier , et
| si il n'existe pas son nom sera écrit dans un fichier.
| J'ai essayé cela
| if not exist monfichier1.log then echo 'monfichier.log' >>
| fichier_manquant.txt
| Mais cela ne marche pas.
| Voulez-vous m'aider ?
| D'avance merci.

if not exist fichier.log echo fichier.log >> fichier_manquant.txt

--
Gilles LAURENT
http://glsft.free.fr
big
Le #739670
Merci. Ok ça marche. Mais ça se complique. Il faut que je verifie si les
fichiers
fich01
fich02
.....
......
.....
.....
fich09
fich10
existent tous sans rupture. Par exemple si fich07 manque alors echo fich07
fichier_manquant.txt
de plus on ne sait pas si ça commence par fichnn ou fichzz, essentiel est


que on trouve s'il y a une rupture? il faut donc prendre le premier et le
dernier et faire un boucle.
Connaissez-vous une solution ? Un bout de code ? D'avance merci.


"big" news:
| Bonjour,

Bonjour,

| je cherche un bout de code qui vérifie l'existance d'un fichier , et
| si il n'existe pas son nom sera écrit dans un fichier.
| J'ai essayé cela
| if not exist monfichier1.log then echo 'monfichier.log' >>
| fichier_manquant.txt
| Mais cela ne marche pas.
| Voulez-vous m'aider ?
| D'avance merci.

if not exist fichier.log echo fichier.log >> fichier_manquant.txt

--
Gilles LAURENT
http://glsft.free.fr






Gilles LAURENT
Le #739668
"big" news:

Bonsoir,

| Merci. Ok ça marche. Mais ça se complique. Il faut que je verifie si
| les fichiers
| fich01
| fich02
| .....
| ......
| .....
| .....
| fich09
| fich10
| existent tous sans rupture. Par exemple si fich07 manque alors echo
| fich07
||| fichier_manquant.txt
| de plus on ne sait pas si ça commence par fichnn ou fichzz, essentiel
| est que on trouve s'il y a une rupture? il faut donc prendre le
| premier et le dernier et faire un boucle.
| Connaissez-vous une solution ? Un bout de code ? D'avance merci.

+++ Usage
> cscript //nologo checkFiles.vbs <path>

+++ Exemple
> cscript //nologo checkFiles.vbs d:testfiles >> missingFiles.txt

--- Coupez ici : checkFiles.vbs ---
Option Explicit

' déclaration
Dim oRe, oFs, oFolder, oFile, oMatches
Dim colFiles
Dim arrFiles(1)
Dim strPath, strFile
Dim i, nFirstFile, nLastFile

' lecture des arguments
strPath=WScript.Arguments(0)

' initialisation des objets
Set oRe=New RegExp
Set oFs=CreateObject("Scripting.FileSystemObject")
Set oFolder=oFs.GetFolder(strPath)
Set colFiles=oFolder.Files

' recherche des bornes
For Each oFile In colFiles
If IsEmpty (arrFiles(0)) Then arrFiles(0)=oFile.Name
arrFiles(1)=oFile.Name
Next

' détermination de la séquence
oRe.Pattern="(d{2})"
Set oMatches=oRe.Execute (arrFiles(0))
nFirstFile=oMatches(0).Submatches(0)
Set oMatches=oRe.Execute (arrFiles(1))
nLastFile=oMatches(0).Submatches(0)

' vérification de la présence des fichiers
For i=nFirstFile + 1 To nLastFile
If i < 10 Then i="0" & i
strFile = oRe.Replace (arrFiles(0), i)
If Not oFs.FileExists (strPath & "" & strFile) Then
WScript.Echo strFile & " missing !"
End If
Next
--- Coupez ici : checkFiles.vbs ---

--
Gilles LAURENT
http://glsft.free.fr
big
Le #739667
merci Gilles pour ton travail. Cela ne marche pas. En effet il crée le
fichier missingFiles.txt mais il est vide quelque soit le cas, qu'un fichier
manque ou non. Les fichiers se nomment de K0016554.LOG à K0016818.LOG. Les
numéros 16554 ou nnnnn changent, mais K00 ne change pas el le nombre de
charactères dans le nome des fichiers reste le même soit 12.
D'avance merci.


"big" news:

Bonsoir,

| Merci. Ok ça marche. Mais ça se complique. Il faut que je verifie si
| les fichiers
| fich01
| fich02
| .....
| ......
| .....
| .....
| fich09
| fich10
| existent tous sans rupture. Par exemple si fich07 manque alors echo
| fich07
||| fichier_manquant.txt
| de plus on ne sait pas si ça commence par fichnn ou fichzz, essentiel
| est que on trouve s'il y a une rupture? il faut donc prendre le
| premier et le dernier et faire un boucle.
| Connaissez-vous une solution ? Un bout de code ? D'avance merci.

+++ Usage
> cscript //nologo checkFiles.vbs <path>

+++ Exemple
> cscript //nologo checkFiles.vbs d:testfiles >> missingFiles.txt

--- Coupez ici : checkFiles.vbs ---
Option Explicit

' déclaration
Dim oRe, oFs, oFolder, oFile, oMatches
Dim colFiles
Dim arrFiles(1)
Dim strPath, strFile
Dim i, nFirstFile, nLastFile

' lecture des arguments
strPath=WScript.Arguments(0)

' initialisation des objets
Set oRe=New RegExp
Set oFs=CreateObject("Scripting.FileSystemObject")
Set oFolder=oFs.GetFolder(strPath)
Set colFiles=oFolder.Files

' recherche des bornes
For Each oFile In colFiles
If IsEmpty (arrFiles(0)) Then arrFiles(0)=oFile.Name
arrFiles(1)=oFile.Name
Next

' détermination de la séquence
oRe.Pattern="(d{2})"
Set oMatches=oRe.Execute (arrFiles(0))
nFirstFile=oMatches(0).Submatches(0)
Set oMatches=oRe.Execute (arrFiles(1))
nLastFile=oMatches(0).Submatches(0)

' vérification de la présence des fichiers
For i=nFirstFile + 1 To nLastFile
If i < 10 Then i="0" & i
strFile = oRe.Replace (arrFiles(0), i)
If Not oFs.FileExists (strPath & "" & strFile) Then
WScript.Echo strFile & " missing !"
End If
Next
--- Coupez ici : checkFiles.vbs ---

--
Gilles LAURENT
http://glsft.free.fr





big
Le #739666
Gilles,
j'ai modifié la ligne suivante :
oRe.Pattern="(d{7})"
au lieu de
oRe.Pattern="(d{2})"
Il detecte bien correctement le nFirstFile et nLastFile. Mais il doit y
avoir un problème dans la detection complète des fichiers et ils prend tout
comme missing.
Cdt.



"big" news:

Bonsoir,

| Merci. Ok ça marche. Mais ça se complique. Il faut que je verifie si
| les fichiers
| fich01
| fich02
| .....
| ......
| .....
| .....
| fich09
| fich10
| existent tous sans rupture. Par exemple si fich07 manque alors echo
| fich07
||| fichier_manquant.txt
| de plus on ne sait pas si ça commence par fichnn ou fichzz, essentiel
| est que on trouve s'il y a une rupture? il faut donc prendre le
| premier et le dernier et faire un boucle.
| Connaissez-vous une solution ? Un bout de code ? D'avance merci.

+++ Usage
> cscript //nologo checkFiles.vbs <path>

+++ Exemple
> cscript //nologo checkFiles.vbs d:testfiles >> missingFiles.txt

--- Coupez ici : checkFiles.vbs ---
Option Explicit

' déclaration
Dim oRe, oFs, oFolder, oFile, oMatches
Dim colFiles
Dim arrFiles(1)
Dim strPath, strFile
Dim i, nFirstFile, nLastFile

' lecture des arguments
strPath=WScript.Arguments(0)

' initialisation des objets
Set oRe=New RegExp
Set oFs=CreateObject("Scripting.FileSystemObject")
Set oFolder=oFs.GetFolder(strPath)
Set colFiles=oFolder.Files

' recherche des bornes
For Each oFile In colFiles
If IsEmpty (arrFiles(0)) Then arrFiles(0)=oFile.Name
arrFiles(1)=oFile.Name
Next

' détermination de la séquence
oRe.Pattern="(d{2})"
Set oMatches=oRe.Execute (arrFiles(0))
nFirstFile=oMatches(0).Submatches(0)
Set oMatches=oRe.Execute (arrFiles(1))
nLastFile=oMatches(0).Submatches(0)

' vérification de la présence des fichiers
For i=nFirstFile + 1 To nLastFile
If i < 10 Then i="0" & i
strFile = oRe.Replace (arrFiles(0), i)
If Not oFs.FileExists (strPath & "" & strFile) Then
WScript.Echo strFile & " missing !"
End If
Next
--- Coupez ici : checkFiles.vbs ---

--
Gilles LAURENT
http://glsft.free.fr





Gilles LAURENT
Le #739665
"big" news:
| Gilles,

Big !

| j'ai modifié la ligne suivante :
| oRe.Pattern="(d{7})"
| au lieu de
| oRe.Pattern="(d{2})"
| Il detecte bien correctement le nFirstFile et nLastFile. Mais il doit
| y avoir un problème dans la detection complète des fichiers et ils
| prend tout comme missing.
| Cdt.

Deux petites adaptations sont nécessaires dans ce cas :
oRe.Pattern="(d{7})"

Et également :
i=Right ("0000000", 7-Len(i)) & i
au lieu de :
If i < 10 Then i="0" & i

--
Gilles LAURENT
http://glsft.free.fr
big
Le #739391
merci Gilles,
j'ai fait la modif, mais il rend :
K0016567.LOG missing !
K0016739.LOG missing !
K0016748.LOG missing !
K0016757.LOG missing !
K0016778.LOG missing !
K0016787.LOG missing !
K0016791.LOG missing !
K0016806.LOG missing !

Or, le seul vrai manquant (expré) est K0016787.LOG
J'ai l'impression que la condition :
If Not oFs.FileExists (strPath & "" & strFile) Then
n'est pas respectée.
Cdt.

"big" news:
| Gilles,

Big !

| j'ai modifié la ligne suivante :
| oRe.Pattern="(d{7})"
| au lieu de
| oRe.Pattern="(d{2})"
| Il detecte bien correctement le nFirstFile et nLastFile. Mais il doit
| y avoir un problème dans la detection complète des fichiers et ils
| prend tout comme missing.
| Cdt.

Deux petites adaptations sont nécessaires dans ce cas :
oRe.Pattern="(d{7})"

Et également :
i=Right ("0000000", 7-Len(i)) & i
au lieu de :
If i < 10 Then i="0" & i

--
Gilles LAURENT
http://glsft.free.fr





big
Le #739390
Gilles,
autant pour moi, ça marche , c'est ok. Le seul bémole , dans le répertoire
il y a un fichier du nom FICHIER_LOGS_20070604.rar, pour l'instant je le sort
du répertoir pour faire marcher ton code car il prend le 2007060 comme le
premier et la boucle sera faussée, aucun fichier manquant détécté. Comment
peut-on exclure ceci ?
D'avance merci.


merci Gilles,
j'ai fait la modif, mais il rend :
K0016567.LOG missing !
K0016739.LOG missing !
K0016748.LOG missing !
K0016757.LOG missing !
K0016778.LOG missing !
K0016787.LOG missing !
K0016791.LOG missing !
K0016806.LOG missing !

Or, le seul vrai manquant (expré) est K0016787.LOG
J'ai l'impression que la condition :
If Not oFs.FileExists (strPath & "" & strFile) Then
n'est pas respectée.
Cdt.

"big" news:
| Gilles,

Big !

| j'ai modifié la ligne suivante :
| oRe.Pattern="(d{7})"
| au lieu de
| oRe.Pattern="(d{2})"
| Il detecte bien correctement le nFirstFile et nLastFile. Mais il doit
| y avoir un problème dans la detection complète des fichiers et ils
| prend tout comme missing.
| Cdt.

Deux petites adaptations sont nécessaires dans ce cas :
oRe.Pattern="(d{7})"

Et également :
i=Right ("0000000", 7-Len(i)) & i
au lieu de :
If i < 10 Then i="0" & i

--
Gilles LAURENT
http://glsft.free.fr







Jacques Barathon [MS]
Le #739389
"Gilles LAURENT" news:
"big" news:
| Gilles,

Big !


Et une version PowerShell, une! :-)

--- get-missinglogs.ps1 ---
$files = dir k00*.log | sort | foreach {$_.name}
$first = [int] $files[0].substring(3,5)
$last = [int] $files[-1].substring(3,5)
for ($i = $first; $i -le $last; $i++) {
$file = "k00{0:d5}.log" -f $i
if ($files -notcontains $file) {
$file >> missinglogs.log
}
}
--- fin de script ---

Jacques

Gilles LAURENT
Le #739388
"big" news:
| Gilles,
| autant pour moi, ça marche , c'est ok. Le seul bémole , dans le
| répertoire il y a un fichier du nom FICHIER_LOGS_20070604.rar, pour
| l'instant je le sort du répertoir pour faire marcher ton code car il
| prend le 2007060 comme le premier et la boucle sera faussée, aucun
| fichier manquant détécté. Comment peut-on exclure ceci ?
| D'avance merci.

En ne traitant que les fichiers .log :

' recherche des bornes
oRe.Pattern=".log": oRe.IgnoreCase=True
For Each oFile In colFiles
If oRe.Test (oFile.name) Then
If IsEmpty (arrFiles(0)) Then arrFiles(0)=oFile.Name
arrFiles(1)=oFile.Name
End If
Next

--
Gilles LAURENT
http://glsft.free.fr
Publicité
Poster une réponse
Anonyme