Question
Problème de traduction .bat vers .ps1 (résolu)
- stagepowershell
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 21
- Remerciements reçus 0
il y a 17 ans 7 mois #2644
par stagepowershell
Problème de traduction .bat vers .ps1 (résolu) a été créé par stagepowershell
Bonjour à tous, je débute sous powershell.
J'ai un soucis pour transcrire une boucle fait sous bat vers le ps1.
Je vous met la ligne me posant probleme.
Si quelqu'un pouvait m'aider ça me rendrait un grand service
[code:1]FOR /F %%F IN (d:\v116\shpj.txt) DO .\lala.ps1 %%F d:\v116 d:\v200[/code:1]
Nb: petite explication.
Dans mon fichier \"shpj.txt\" des utilisateurs mettent des noms de dossier qui seront copiés à l'aide du script \"lala.ps1\".(dans le script se trouve une multitude de copy-item)
Je sait c'est tordu mais c'est l'entreprise qui décide.^^
Merci d'avance car mes recherches sont infructueuses<br><br>Message édité par: sagara, à: 20/08/08 09:02
J'ai un soucis pour transcrire une boucle fait sous bat vers le ps1.
Je vous met la ligne me posant probleme.
Si quelqu'un pouvait m'aider ça me rendrait un grand service
[code:1]FOR /F %%F IN (d:\v116\shpj.txt) DO .\lala.ps1 %%F d:\v116 d:\v200[/code:1]
Nb: petite explication.
Dans mon fichier \"shpj.txt\" des utilisateurs mettent des noms de dossier qui seront copiés à l'aide du script \"lala.ps1\".(dans le script se trouve une multitude de copy-item)
Je sait c'est tordu mais c'est l'entreprise qui décide.^^
Merci d'avance car mes recherches sont infructueuses<br><br>Message édité par: sagara, à: 20/08/08 09:02
Connexion ou Créer un compte pour participer à la conversation.
- daniel soares
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 133
- Remerciements reçus 0
il y a 17 ans 7 mois #2645
par daniel soares
Réponse de daniel soares sur le sujet Re:un probleme de traduction .bat vers .ps1
si shpj.txt contient les noms de repertoires dans une meme colonne
[code:1]
get-content C:\shpj.txt |
foreach{ Copy-Item -r -path d:\v116\$_ -destination d:\v200
[/code:1]
en gros get-content recupere toutes les lignes du fichier
les envoie dans le pipe | et pour chaque occurence
un copy est fait du repertoire et sous repertoies de d:\v116 vers d:\v200
$_ représente l'objet passé dans le pipe
d'autres proprietés sont utilisables avec copy-item permettant d'affiner la copie
taper get-help copy-item -full pour plus d'aide
je ne fais pas appel a un script externe puisque je pars du principe que powershell prends tout en charge
[code:1]
get-content C:\shpj.txt |
foreach{ Copy-Item -r -path d:\v116\$_ -destination d:\v200
[/code:1]
en gros get-content recupere toutes les lignes du fichier
les envoie dans le pipe | et pour chaque occurence
un copy est fait du repertoire et sous repertoies de d:\v116 vers d:\v200
$_ représente l'objet passé dans le pipe
d'autres proprietés sont utilisables avec copy-item permettant d'affiner la copie
taper get-help copy-item -full pour plus d'aide
je ne fais pas appel a un script externe puisque je pars du principe que powershell prends tout en charge
Connexion ou Créer un compte pour participer à la conversation.
- stagepowershell
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 21
- Remerciements reçus 0
il y a 17 ans 7 mois #2646
par stagepowershell
Réponse de stagepowershell sur le sujet Re:un probleme de traduction .bat vers .ps1
Merci bien pour le foreach car j'étais parti sur la route suivante (et ça ne doit pas être très bon):
[code:1]
$collection = Get-Content \"d:\dirj.txt\"
foreach ($item in $collection) {
.\dubt.ps1
}
[/code:1]
j'utilise un script externe car certains fichiers doivent etre pris et pas d'autres.Mais comme tu l'as dit pas besoin quand tu prend tout le dossier.
voici un bout de code de mon script externe ^^
[code:1]$VLST_PATH1 = \"D:\t926\ex\du\\"
$VLST_ARGUS = $Args
$VLST_CREFI1 = $VLST_ARGUS[1]+\"`\\"+$VLST_ARGUS[0]
$VLST_CREFI2 = $VLST_ARGUS[2]+\"`\\"+$VLST_ARGUS[0]
#copie .shp vers .shp
if(\"$VLST_CREFI1.shp\"«»){copy-item -Path \"$VLST_CREFI1.shp\" -Destination \"$VLST_CREFI2.shp\"}
#copie .shx vers .shx
if(\"$VLST_CREFI1.shx\"«»){copy-item -Path \"$VLST_CREFI1.shx\" -Destination \"$VLST_CREFI2.shx\"}[/code:1]
Plus qu'a tester sur le serveur de test.
Merci encore<br><br>Message édité par: sagara, à: 13/08/08 16:09
[code:1]
$collection = Get-Content \"d:\dirj.txt\"
foreach ($item in $collection) {
.\dubt.ps1
}
[/code:1]
j'utilise un script externe car certains fichiers doivent etre pris et pas d'autres.Mais comme tu l'as dit pas besoin quand tu prend tout le dossier.
voici un bout de code de mon script externe ^^
[code:1]$VLST_PATH1 = \"D:\t926\ex\du\\"
$VLST_ARGUS = $Args
$VLST_CREFI1 = $VLST_ARGUS[1]+\"`\\"+$VLST_ARGUS[0]
$VLST_CREFI2 = $VLST_ARGUS[2]+\"`\\"+$VLST_ARGUS[0]
#copie .shp vers .shp
if(\"$VLST_CREFI1.shp\"«»){copy-item -Path \"$VLST_CREFI1.shp\" -Destination \"$VLST_CREFI2.shp\"}
#copie .shx vers .shx
if(\"$VLST_CREFI1.shx\"«»){copy-item -Path \"$VLST_CREFI1.shx\" -Destination \"$VLST_CREFI2.shx\"}[/code:1]
Plus qu'a tester sur le serveur de test.
Merci encore<br><br>Message édité par: sagara, à: 13/08/08 16:09
Connexion ou Créer un compte pour participer à la conversation.
- stagepowershell
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 21
- Remerciements reçus 0
il y a 17 ans 7 mois #2673
par stagepowershell
Réponse de stagepowershell sur le sujet Re:un probleme de traduction .bat vers .ps1
Re-Bonjour.Derniere petite question et après promis j'arrête.
Dan m'ayant débloqué sur le foreach j'ai réussi a avancer dans mon prog.
Maintenant il me reste un dernier problème a régler et là je dois dire que je sèche.
dubt82 liste shpj qui contient des noms de répertoires
puis renvoie ces noms de répertoire a dubt.ps1 qui lui s'occupe de faire une copie de fichier suivant l'extension. Les fichiers se copient dans le bon emplacement mais le problème c'est que ça me créer un dossier supplémentaire qui en plus est vide^^.
Sauriez vous comment empecher que le dossier se créé?
plus concretement:
[code:1]
SOURCE: d:\v116\bat\
-locap_p.jpeg
-locap_p.xml
DESTINATION: d:\hre\bat\
-locap_p.jpeg
-locap_p.xml
\locap_p\[/code:1]
Ce que je voudrais c'est simplement
[code:1]
DESTINATION: d:\hre\bat\
-locap_p.jpeg
-locap_p.xml
[/code:1]
dubt82.ps1
[code:1]
$VLST_RECH1 = \"d:\shpj.txt\"
$VLST_SRCJ = \"d:\v116\"
$VLST_DEST = \"d:\hre\\"
get-content \"$VLST_RECH1\" | foreach { d:\dubt.ps1 $_ $VLST_SRCJ $VLST_DEST}
[/code:1]
shpj.txt
[code:1]
ads/doss_p
bat/loca_p
cad/bati
[/code:1]
dubt.ps1
[code:1]
$VLST_ARGUS = $Args
$VLST_CREFI1 = $VLST_ARGUS[1]+\"`\\"+$VLST_ARGUS[0]
$VLST_CREFI2 = $VLST_ARGUS[2]+\"`\\"+$VLST_ARGUS[0]
# Création du dossier de destination s'il n'existe pas
if (-not (Test-Path -LiteralPath $VLST_CREFI2)) {
New-Item -ItemType Directory -Path $VLST_CREFI2
}
#copie .shp vers .shp
if(\"$VLST_CREFI1.shp\"«»){copy-item -Path \"$VLST_CREFI1.shp\" -Force -Destination \"$VLST_CREFI2.shp\" }
#copie .shx vers .shx
if(\"$VLST_CREFI1.shx\"«»){copy-item -Path \"$VLST_CREFI1.shx\" -Force -Destination \"$VLST_CREFI2.shx\" }
[/code:1]
Merci d'avance pour votre aide.<br><br>Message édité par: sagara, à: 13/08/08 16:29
Dan m'ayant débloqué sur le foreach j'ai réussi a avancer dans mon prog.
Maintenant il me reste un dernier problème a régler et là je dois dire que je sèche.
dubt82 liste shpj qui contient des noms de répertoires
puis renvoie ces noms de répertoire a dubt.ps1 qui lui s'occupe de faire une copie de fichier suivant l'extension. Les fichiers se copient dans le bon emplacement mais le problème c'est que ça me créer un dossier supplémentaire qui en plus est vide^^.
Sauriez vous comment empecher que le dossier se créé?
plus concretement:
[code:1]
SOURCE: d:\v116\bat\
-locap_p.jpeg
-locap_p.xml
DESTINATION: d:\hre\bat\
-locap_p.jpeg
-locap_p.xml
\locap_p\[/code:1]
Ce que je voudrais c'est simplement
[code:1]
DESTINATION: d:\hre\bat\
-locap_p.jpeg
-locap_p.xml
[/code:1]
dubt82.ps1
[code:1]
$VLST_RECH1 = \"d:\shpj.txt\"
$VLST_SRCJ = \"d:\v116\"
$VLST_DEST = \"d:\hre\\"
get-content \"$VLST_RECH1\" | foreach { d:\dubt.ps1 $_ $VLST_SRCJ $VLST_DEST}
[/code:1]
shpj.txt
[code:1]
ads/doss_p
bat/loca_p
cad/bati
[/code:1]
dubt.ps1
[code:1]
$VLST_ARGUS = $Args
$VLST_CREFI1 = $VLST_ARGUS[1]+\"`\\"+$VLST_ARGUS[0]
$VLST_CREFI2 = $VLST_ARGUS[2]+\"`\\"+$VLST_ARGUS[0]
# Création du dossier de destination s'il n'existe pas
if (-not (Test-Path -LiteralPath $VLST_CREFI2)) {
New-Item -ItemType Directory -Path $VLST_CREFI2
}
#copie .shp vers .shp
if(\"$VLST_CREFI1.shp\"«»){copy-item -Path \"$VLST_CREFI1.shp\" -Force -Destination \"$VLST_CREFI2.shp\" }
#copie .shx vers .shx
if(\"$VLST_CREFI1.shx\"«»){copy-item -Path \"$VLST_CREFI1.shx\" -Force -Destination \"$VLST_CREFI2.shx\" }
[/code:1]
Merci d'avance pour votre aide.<br><br>Message édité par: sagara, à: 13/08/08 16:29
Connexion ou Créer un compte pour participer à la conversation.
- stagepowershell
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 21
- Remerciements reçus 0
il y a 17 ans 7 mois #2682
par stagepowershell
Réponse de stagepowershell sur le sujet Re:un probleme de traduction .bat vers .ps1
Bon j'ai finalement réussi à trouver un moyen peu professionnel mais qui fonctionne.
Je post le code pour ceux que ça interesse.
(Des fois je me dis qu'a la naissance j'ai bu un biberon de débilité..Honte à moi)
J'ai juste mis un remove-item du dossier précedent.
Du coup les fichiers sont conservé car ils ne sont pas concernés dans le chemin ^^
(1semaine pour ça... Pitoyable)
[code:1]
$VLST_PATH1 = \"D:\\"
$VLST_ARGUS = $Args
$VLST_CREFI1 = $VLST_ARGUS[1]+\"`\\"+$VLST_ARGUS[0]
$VLST_CREFI2 = $VLST_ARGUS[2]+\"`\\"+$VLST_ARGUS[0]
# Création du dossier de destination s'il n'existe pas
if(-not (Test-Path -LiteralPath $VLST_CREFI2)){
New-Item -ItemType dir -Path $VLST_CREFI2
Remove-item -path $VLST_CREFI2
}
#copie .shp vers .shp
if(\"$VLST_CREFI1.shp\"«»){copy-item -Path \"$VLST_CREFI1.shp\" -Force -Destination \"$VLST_CREFI2.shp\" }
#copie .shx vers .shx
if(\"$VLST_CREFI1.shx\"«»){copy-item -Path \"$VLST_CREFI1.shx\" -Force -Destination \"$VLST_CREFI2.shx\" }
[/code:1]
Bonne journée à vous.
Rien ne vaut l'autoformation...
Je post le code pour ceux que ça interesse.
(Des fois je me dis qu'a la naissance j'ai bu un biberon de débilité..Honte à moi)
J'ai juste mis un remove-item du dossier précedent.
Du coup les fichiers sont conservé car ils ne sont pas concernés dans le chemin ^^
(1semaine pour ça... Pitoyable)
[code:1]
$VLST_PATH1 = \"D:\\"
$VLST_ARGUS = $Args
$VLST_CREFI1 = $VLST_ARGUS[1]+\"`\\"+$VLST_ARGUS[0]
$VLST_CREFI2 = $VLST_ARGUS[2]+\"`\\"+$VLST_ARGUS[0]
# Création du dossier de destination s'il n'existe pas
if(-not (Test-Path -LiteralPath $VLST_CREFI2)){
New-Item -ItemType dir -Path $VLST_CREFI2
Remove-item -path $VLST_CREFI2
}
#copie .shp vers .shp
if(\"$VLST_CREFI1.shp\"«»){copy-item -Path \"$VLST_CREFI1.shp\" -Force -Destination \"$VLST_CREFI2.shp\" }
#copie .shx vers .shx
if(\"$VLST_CREFI1.shx\"«»){copy-item -Path \"$VLST_CREFI1.shx\" -Force -Destination \"$VLST_CREFI2.shx\" }
[/code:1]
Bonne journée à vous.
Rien ne vaut l'autoformation...
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 17 ans 7 mois #2685
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:un probleme de traduction .bat vers .ps1
Bonjour Sagara,
Désolé de n'avoir pu t'aider sur ce coup là. Une autre fois peut-être...
Juste quelques petites remarques :
- Tu n'as pas besoin de mettre de guillemets autour de tes variables
- A quoi bon créer un répertoire pour le supprimer l'instruction d'après ?
- Pourquoi fais tu ceci if(\"$VLST_CREFI1.shp\"){...} ? Ne confond pas l'existence de ton fichier avec une variable.
Désolé si j'ai pas suivi...
Arnaud
Désolé de n'avoir pu t'aider sur ce coup là. Une autre fois peut-être...
Juste quelques petites remarques :
- Tu n'as pas besoin de mettre de guillemets autour de tes variables
- A quoi bon créer un répertoire pour le supprimer l'instruction d'après ?
- Pourquoi fais tu ceci if(\"$VLST_CREFI1.shp\"){...} ? Ne confond pas l'existence de ton fichier avec une variable.
Désolé si j'ai pas suivi...
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.103 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Problème de traduction .bat vers .ps1 (résolu)