Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1630 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Transformer script Powershell en batch

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Transformer script Powershell en batch

n°2417423
arnuche
Posté le 15-05-2022 à 20:34:37  profilanswer
 

Bonjour,
 
j'utilise ce script qui fonctionne bien mais j'aimerais le transformer en batch, pas spécialement un fichier bat mais une commande qui permettrait de l'appliquer à tous les fichiers txt d'un dossier ;
 

Code :
  1. $o=""
  2. $n=0
  3. foreach($line in (Get-Content "K:\vid reso.txt" )){
  4.   $nline = $line.Split("," )
  5.   $nline2=($nline[1]+$nline[2])
  6.   if ($nline2 -ne $preventry) {
  7.     $n0=$nline[0]
  8.     $o="$o,$n0"
  9.     $n=$n0
  10. }
  11.   $preventry = $nline2
  12. }
  13. if ($o.length -gt 1){
  14. echo $o.Remove(0,1) > "K:\vid reso change.txt"
  15. } else {
  16. Write-Host "No resolution changes found" -ForegroundColor Red
  17. }


 
Je voudrais donc qu'il rajoute " change" derrière le nom de la vidéo.
 
Pour info ça sert à analyser un fichier généré par ffprobe qui contient la résolution d'une vidéo, il permet d'indiquer les n° de frames où il y a un éventuel changement de résolution (ce qui peut arriver dans le cas d'un streaming).

mood
Publicité
Posté le 15-05-2022 à 20:34:37  profilanswer
 

n°2417639
arnuche
Posté le 17-05-2022 à 10:04:55  profilanswer
 

J'avance un peu, j'ai modifié le début et la fenêtre de Powershell affiche bien le contenu du 1er fichier txt du dossier mais il ne termine pas l'opération et j'obtiens toujours un message d'erreur, apparemment c'est juste une histoire de parenthèses ou d'accolades mal placées ;
 

Code :
  1. Get-Content -Path "K:\test\*.txt"
  2. $o=""
  3. $n=0
  4. foreach($line in{
  5.   $nline = $line.Split("," )
  6.   $nline2=($nline[1]+$nline[2])
  7.   if ($nline2 -ne $preventry)) {
  8.     $n0=$nline[0]
  9.     $o="$o,$n0"
  10.     $n=$n0
  11. }
  12.   $preventry = $nline2
  13. }
  14. if ($o.length -gt 1){
  15. echo $o.Remove(0,1) > "K:\test\%~na change.txt"
  16. } else {
  17. Write-Host "No resolution changes found" -ForegroundColor Red
  18. }


 
Je ne suis pas très sûr non plus de la manière de spécifier le nom et le dossier des fichiers à créer pour garder le nom d'origine et rajouter " change" (K:\test\%~na change).


Message édité par arnuche le 17-05-2022 à 10:08:26
n°2418009
Lt Ripley
T'es à fond là ?
Posté le 21-05-2022 à 11:17:51  profilanswer
 

Je peux te faire ça en java si tu veux.  Tu mets le jar que j'aurai fait dans le dossier que tu veux faire et tu le lances


Message édité par Lt Ripley le 21-05-2022 à 11:18:48

---------------
Mes apps  |  Viens coder  |  Mon topal de vente
n°2418010
arnuche
Posté le 21-05-2022 à 11:29:30  profilanswer
 

Merci, pourquoi pas mais j'aimerais déjà parvenir à le faire de manière plus basique, je suppose qu'il doit y avoir moyen sans Java.
Je suis habitué aux batchs pour la console basique de Windows, ça commence toujours par for %a in ("..., mais ici ça a l'air différent.

n°2418025
rat de com​bat
attention rongeur méchant!
Posté le 21-05-2022 à 20:41:25  profilanswer
 

Il y a un peu de logique / traitement de texte dans ce script, donc en batch soit c'est impossible soit tu vas en chier. Tourne toi vers Python (ou Perl si tu préfères), mais sous Windows faudra l'installer. Sinon on peut faire ça en C aussi, c'est un poil maso mais ça donnera un seul petit exécutable plutôt que de devoir installer tout un bazar.

n°2418027
arnuche
Posté le 21-05-2022 à 21:09:43  profilanswer
 

Ah d'accord, je ne pensais pas que ce serait si compliqué et je n'y connais rien en programmation.

n°2418029
rat de com​bat
attention rongeur méchant!
Posté le 21-05-2022 à 21:59:22  profilanswer
 

Ah ok, tu veux juste modifier un truc existant pour l'appliquer à tout les fichiers, mais tu peux faire ça en Powershell? Car la-dedans c'est visiblement possible. Je n'y connais rien par contre, mais il doit bien y avoir quelqu'un sur le forum pour t'aider. A ta place je modifierais le titre du sujet, genre "appliquer script Powershell à plusieurs fichiers", peut-être tu auras plus de chance...

n°2418030
arnuche
Posté le 21-05-2022 à 22:13:25  profilanswer
 

rat de combat a écrit :

Ah ok, tu veux juste modifier un truc existant pour l'appliquer à tout les fichiers, mais tu peux faire ça en Powershell?


Oui, c'est ce que j'expliquais dans le 1er post.

n°2418037
Je@nb
Kindly give dime
Posté le 22-05-2022 à 13:13:09  profilanswer
 

C'est pas compliqué, tu récupères la liste des fichiers txt dans ton dossier, et dans ton code actuel tu variabilises les endroits où il y a ton nom de fichier en dur pour l'utiliser dans une boucle.

Code :
  1. $fichiers = get-childitem -Path "K:\test" -Include *.txt -Recurse
  2. foreach ($fichier in $fichiers) {
  3. ....
  4. }
 

Et tu récupère le nom du fichier avec $fichier.Name ou son full path avec $fichier.FullName ou son nom sans extension avec BaseName (si tu veux rajouter ton _changed c'est pratique)


Message édité par Je@nb le 22-05-2022 à 13:20:12
n°2418042
arnuche
Posté le 22-05-2022 à 17:18:42  profilanswer
 

Houlà, je ne comprends vraiment pas tout à ton explication  :o  
 
Pour la 2ème ligne, on tape ça tel quel ou il faut remplacer le mot fichier par autre chose ?
 
Concernant le nom d'export (ligne 15 dans mon 1er post), on met quoi à la place de "K:\test\%~na change.txt" ?
 
Et y a-t-il moyen de ne sélectionner que les fichiers dont le nom se termine par " reso" dans le dossier spécifié (et d'y rajouter " change", puisque c'est le but) ?
 
Merci  :jap:


Message édité par arnuche le 22-05-2022 à 17:30:33

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Transformer script Powershell en batch

 

Sujets relatifs
[Powershell] [RESOLU] Script pour mettre à jour Firefox[Powershell] [RESOLU] Lire caractères à partir du 17eme d'une chaine
[PowerShell] Script SFTP avec authentification par clé de fCréation d'un .bat ou script PowerShell pour partage de dossiers.
Script CSV en JSONExclure script du preloader
[Powershell] Variable objet en paramètre de fonction & ValidateSet 
Plus de sujets relatifs à : Transformer script Powershell en batch


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR