1er Batch pour un novice
Modérateur : WIN32-[GG]
1er Batch pour un novice
Bonjour, J'ai besoin de votre aide pour une routine de findstr.
Je m'explique,
Dans une arborescence je cherche en premier a scanner les dossiers qui on un nom qui commence par FME, les autres seront ignoré.
Et pour ces dossiers "FME" je cherche a récupérer toutes les lignes qui contienne DME* qui sont dans un fichier nommé _ps qui lui même est dans le dossier et extraire les chaines DME+14 caractère dans un fichier txt de sortie.
Mon arbo ressemble à ça:
FME34
_ps récupérer les str DME dans ce fichier
abcz...
_ps ignorer
FME265
_ps récupérer les str DME dans ce fichier
Je vous remercie pour votre aide future et excusez moi si mon explication n'est pas claire...
Je m'explique,
Dans une arborescence je cherche en premier a scanner les dossiers qui on un nom qui commence par FME, les autres seront ignoré.
Et pour ces dossiers "FME" je cherche a récupérer toutes les lignes qui contienne DME* qui sont dans un fichier nommé _ps qui lui même est dans le dossier et extraire les chaines DME+14 caractère dans un fichier txt de sortie.
Mon arbo ressemble à ça:
FME34
_ps récupérer les str DME dans ce fichier
abcz...
_ps ignorer
FME265
_ps récupérer les str DME dans ce fichier
Je vous remercie pour votre aide future et excusez moi si mon explication n'est pas claire...
-
- Batcheur débutant
- Messages : 10
- Enregistré le : 05 nov. 2015 07:48
Re: 1er Batch pour un novice
bonjour, un copié-collé ou une capture d'écran du contenu des fichiers dans lesquels effectuer la recherche serait bienvenu
Re: 1er Batch pour un novice
lol te fatigues pas pour des cons qui répondent jamaispleaseTellMeWhoIam a écrit :bonjour, un copié-collé ou une capture d'écran du contenu des fichiers dans lesquels effectuer la recherche serait bienvenu
Re: 1er Batch pour un novice
Bonjour tout le monde voici le con qui ne répond pas....
Bon pour ceux qui sont intéressé pour l'entraide et non l'insulte immédiate voici comme demandé un capture d'écran du dossier avec l'arborescence et le contenue du fameux fichier _ps.
Petite correction dans le fichier _ps c'est la suite de caractère FME et non pas DME à chercher... Il est possible d'exclure les doublons aussi mais c'est moins important.
Merci d'avance
Bon pour ceux qui sont intéressé pour l'entraide et non l'insulte immédiate voici comme demandé un capture d'écran du dossier avec l'arborescence et le contenue du fameux fichier _ps.
Petite correction dans le fichier _ps c'est la suite de caractère FME et non pas DME à chercher... Il est possible d'exclure les doublons aussi mais c'est moins important.
Merci d'avance
1 COMPONENT-NAME fme92b700101_1
1 CLASS-NAME fme92b700101
1 INSTANCE 1
1 PARENT-NAME NULL
1 ITEM-NAME fme92b700101
1 TYPE T PS Y
1 COMPONENT-ORDER 1
1 ORIENTATION 0.0 0.0 0.0 0.0 0.0 0.0
1 GLOBAL-ORIENT 0 0 0 0 0 0
2 ATTRIBUTE fme92b700101_1:DESIGNATION:INSTANCE:MON.SUP.C0/C11 SUP G
3 ATTRIBUTE fme92b700101_1:POSTE-MONTAGE:INSTANCE:25000
4 ATTRIBUTE fme92b700101_1:RESP-BE:INSTANCE:PA82
5 ATTRIBUTE fme92b700101_1:RESP-PROD:INSTANCE:4H1
6 ATTRIBUTE fme92b700101_1:IDENTIFICATION:INSTANCE:RF
7 ATTRIBUTE fme92b700101_1:RESP-USINE:INSTANCE:NZ
2 COMPONENT-NAME fme92b700101-001_1
2 CLASS-NAME fme92b700101-001
2 INSTANCE 1
2 PARENT-NAME fme92b700101_1
2 ITEM-NAME fme92b700101-001
2 TYPE T PS Y
2 COMPONENT-ORDER 2
2 ORIENTATION 0.0 0.0 0.0 0.0 0.0 0.0
3 COMPONENT-NAME fme92b700101-002_1
3 CLASS-NAME fme92b700101-002
3 INSTANCE 1
3 PARENT-NAME fme92b700101_1
3 ITEM-NAME fme92b700101-002
3 TYPE T PS Y
3 COMPONENT-ORDER 3
3 ORIENTATION 0.0 0.0 0.0 0.0 0.0 0.0
4 COMPONENT-NAME fme92b700101-003_1
4 CLASS-NAME fme92b700101-003
4 INSTANCE 1
4 PARENT-NAME fme92b700101_1
4 ITEM-NAME fme92b700101-003
4 TYPE T PS Y
4 COMPONENT-ORDER 4
4 ORIENTATION 0.0 0.0 0.0 0.0 0.0 0.0
-
- Batcheur débutant
- Messages : 10
- Enregistré le : 05 nov. 2015 07:48
Re: 1er Batch pour un novice
Bonjour, voici le résultat obtenu (doublons exclus) avec le code ci-dessous (testé sur une arborescence similaire à celle de la capture, chaque fichier "_ps" étant identique au copié-collé fourni. (Un fichier "fme_strings.txt" est créé dans chaque dossier traité si le fichier"_ps" contient au moins une chaîne "fme"))
Le script doit se trouver parmis les dossiers à traiterfme92b700101_1
fme92b700101
fme92b700101-001_1
fme92b700101-001
fme92b700101-002_1
fme92b700101-002
fme92b700101-003_1
fme92b700101-003
Code : Tout sélectionner
@echo off
set a=%random%%random%%random%_%random%%random%%random%
md %tmp%\%a%
md %tmp%\%a%\a
(
dir fme* /ad /b
)>%tmp%\%a%\listeDesDossiers
for /f "tokens=*" %%a in (%tmp%\%a%\listeDesDossiers) do (
cd %%a
(
find /c "fme" _ps
)>%tmp%\%a%\tmpA
for /f "skip=1 tokens=3 delims= " %%a in (%tmp%\%a%\tmpA) do (
set strFound=%%a
)
if not strFound==0 (
(
find "fme" _ps
)>%tmp%\%a%\tmpA
for /f "tokens=1 delims=:" %%a in (%tmp%\%a%\tmpA) do (
(
echo %%a
)>>%tmp%\%a%\tmpB
)
for /f "skip=1 tokens=3 delims= " %%a in (%tmp%\%a%\tmpB) do (
if not exist %tmp%\%a%\a\%%a (
(
type nul
)>%tmp%\%a%\a\%%a
(
echo %%a
)>>fme_strings.txt
)
)
del /q %tmp%\%a%\a\*.*
(
type nul
)>%tmp%\%a%\tmpA
(
type nul
)>%tmp%\%a%\tmpB
)
cd ..
)
rd /s /q %tmp%\%a%
exit
Re: 1er Batch pour un novice
Salut super ton script par contre j'ai un souci que j'ai oublié de cité, le dossier contenant tous les fichier sources sont en lecture seul donc pas possible de créer de fichier dedans.
Par contre est il possible sortir tous les résultats dans un seul fichier?
En tout cas merci beaucoup pour ton aide ça me fait une très bonne base déjà.
Par contre est il possible sortir tous les résultats dans un seul fichier?
En tout cas merci beaucoup pour ton aide ça me fait une très bonne base déjà.
-
- Batcheur débutant
- Messages : 10
- Enregistré le : 05 nov. 2015 07:48
Re: 1er Batch pour un novice
Salut, la leture seule ne s'applique normalement qu'aux fichiers. Tu as essayé de créer manuellement un fichier dans un de ces dossiers ?
Pour ce qui est d'écrire tout les résultats dans un même fichier oui, c'est possible.
Ce que tu voudrais c'est avoir les lignes "fme" de tous les fichiers "_ps", doublons exclus, sans savoir de quel fichier vient telle ou telle ligne ?
Pour ce qui est d'écrire tout les résultats dans un même fichier oui, c'est possible.
Ce que tu voudrais c'est avoir les lignes "fme" de tous les fichiers "_ps", doublons exclus, sans savoir de quel fichier vient telle ou telle ligne ?
Re: 1er Batch pour un novice
En fait c'est un dossier réseau de ma société ou il est strictement interdit d'écrire "c'est un vault informatique pour du PLM (conception mécanique)". Je ne pense donc pas que je le puisse.
C'est exactement ça un fichier avec toute les FME compilé ligne par ligne de n'importe quel dossier.
En gros je cherche a faire un énorme extract de toute les FME qui ce trouve dans ce dossier réseau qui contient des milliers de dossier si possible sans les doublons.
Ce fichier sera ensuite traité sous excel.
Peux tu me donner un coup de main?
Je te remercie d'avance
C'est exactement ça un fichier avec toute les FME compilé ligne par ligne de n'importe quel dossier.
En gros je cherche a faire un énorme extract de toute les FME qui ce trouve dans ce dossier réseau qui contient des milliers de dossier si possible sans les doublons.
Ce fichier sera ensuite traité sous excel.
Peux tu me donner un coup de main?
Je te remercie d'avance
-
- Batcheur débutant
- Messages : 10
- Enregistré le : 05 nov. 2015 07:48
Re: 1er Batch pour un novice
Bonjour, voilà qui devrait faire l'affaire.
En haut de script, tu modifies les variables "source" et "sortie".
"source" = chemin d'accés au dossier qui contient les dossiers "fme*"
"sortie" = chemin et nom du fichier de sortie
Les écritures nécessaires se font dans un dossier (supprimé en fin de script) créé dans le répertoire temporaire local.
L'emplacement du script n'a plus d'importance.
En haut de script, tu modifies les variables "source" et "sortie".
"source" = chemin d'accés au dossier qui contient les dossiers "fme*"
"sortie" = chemin et nom du fichier de sortie
Les écritures nécessaires se font dans un dossier (supprimé en fin de script) créé dans le répertoire temporaire local.
L'emplacement du script n'a plus d'importance.
Code : Tout sélectionner
@echo off
set source=d:\scripts\batch\test
set sortie=%userprofile%\desktop\junk\test\fme_strings.txt
set a=%random%%random%%random%_%random%%random%%random%
md "%tmp%\%a%"
(
dir "%source%\fme*" /ad /b
)>"%tmp%\%a%\listeDesDossiers"
for /f "usebackq tokens=*" %%a in ("%tmp%\%a%\listeDesDossiers") do (
(
find "fme" "%source%\%%a\_ps"
)>>"%tmp%\%a%\tmpA"
)
for /f "usebackq eol=- tokens=1 delims=:" %%a in ("%tmp%\%a%\tmpA") do (
(
echo %%a
)>>"%tmp%\%a%\tmpB"
)
for /f "usebackq eol=- tokens=3 delims= " %%a in ("%tmp%\%a%\tmpB") do (
if not defined %%a (
set %%a=0
(
echo %%a
)>>"%sortie%"
)
)
rd /s /q "%tmp%\%a%"
exit
Re: 1er Batch pour un novice
Salut,
Super ton script fonctionne a la perfection. Je te remercie grandement pour ton aide.
J'ai un dernier service si tu as le temps et l'envie,
Pourrais tu me commenter ton script afin que je puisse mieux le comprendre et ainsi progresser dans ma compréhension des commande batch.
Merci beaucoup
Super ton script fonctionne a la perfection. Je te remercie grandement pour ton aide.
J'ai un dernier service si tu as le temps et l'envie,
Pourrais tu me commenter ton script afin que je puisse mieux le comprendre et ainsi progresser dans ma compréhension des commande batch.
Merci beaucoup