Robocopy sortie fichier texte, supprimer les tabulations?
Résolu/Fermé
brucine
Messages postés
18384
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
28 décembre 2024
-
Modifié le 2 juin 2021 à 17:29
brucine Messages postés 18384 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 28 décembre 2024 - 4 juin 2021 à 23:40
brucine Messages postés 18384 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 28 décembre 2024 - 4 juin 2021 à 23:40
A voir également:
- Robocopy exclure dossier
- Dossier appdata - Guide
- Robocopy download - Télécharger - Utilitaires
- Mettre un mot de passe sur un dossier - Guide
- Dossier rar - Guide
- Dossier démarrage - Guide
5 réponses
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
Modifié le 4 juin 2021 à 19:08
Modifié le 4 juin 2021 à 19:08
Bonjour,
Ce que tu veux faire est trop compliqué.
S'il s'agit de créer une liste, pourquoi ne pas utiliser simplement un FOR avec un ECHO ?
Si tu as des choses à filtrer, tu peux ensuite rajouter des FIND.
Ce que tu veux faire est trop compliqué.
S'il s'agit de créer une liste, pourquoi ne pas utiliser simplement un FOR avec un ECHO ?
Si tu as des choses à filtrer, tu peux ensuite rajouter des FIND.
set "filtre=*.mpeg *.mpg *.avi *.mkv *.3gp *.aaf *.asf *.flv *.mp4 *.ogg *.ogm *.mov *.webm *.rm *.dpx *.mxf *.omfi *.vob *.wmv *.xvid *.divx *.3ivx *.bik *.bik2 *.bk2"
for /r K:\ %%A in (%filtre%) do echo %%A >>C:\Users\bru\Desktop\films\films.txt
brucine
Messages postés
18384
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
28 décembre 2024
2 729
4 juin 2021 à 20:31
4 juin 2021 à 20:31
Certes, la syntaxe est simple (et un peu à modifier puisque en renommant les fichiers j'ai oublié une cédille et que j'ai des extensions en plus et en moins):
ça sort sous la forme:
K:\EF\Full_metal_jacket.avi
et j'en ai rajouté une couche en passant par un fichier temp:
parce que je n'ai pas été fichu de trouver comment imbriquer la 2ème dans la première, là on a:
Full_metal_jacket.avi
Mais si j'ai envisagé de détourner une autre commande, c'est parce que:
1) La poubelle pourtant vide ne l'est pas et pas une extension à exclure: K:\$RECYCLE.BIN\$IJKEPSS.mp4
2) Toute commande que j'ai utilisée pour l'instant hors robocopy me retourne les fichiers d'un dossier "LAP" pourtant comme les autres après ceux du dossier "UZ"
3) Et parce que j'ai besoin de critères d'exclusion: 1 des dossiers (Records) contient à sa racine des fichiers .ts qui seront copiés et autres extensions qui seront exclues mais plusieurs sous-dossiers (au nom de chaque film) et comprenant chacun plusieurs .ts eux à exclure avec pour particularité de toujours s'appeler 00n.ts où n est un seul chiffre variable, il faut dans ces conditions soit exclure 00*.ts, soit exclure tous les dossiers au sens de robocopy de niveau 3.
Mais bien sûr, et pendant que je suis à abuser, si tu trouves une syntaxe plus simple pour faire le job, je suis preneur.
Merci.
@echo off
chcp 1252 >nul
set "filtre=*.avi *.ts *.mkv *.mp4 *.mpg
for /r K:\ %%A in (%filtre%) do echo %%A >>C:\Users\bru\Desktop\films\temp.txt
ça sort sous la forme:
K:\EF\Full_metal_jacket.avi
et j'en ai rajouté une couche en passant par un fichier temp:
@echo off
chcp 1252 >nul
for /f "tokens=1,2,3 delims=\" %%a in ('type "C:\Users\bru\Desktop\films\temp.txt"') do (
echo %%c >> C:\Users\bru\Desktop\films\films.txt
)
parce que je n'ai pas été fichu de trouver comment imbriquer la 2ème dans la première, là on a:
Full_metal_jacket.avi
Mais si j'ai envisagé de détourner une autre commande, c'est parce que:
1) La poubelle pourtant vide ne l'est pas et pas une extension à exclure: K:\$RECYCLE.BIN\$IJKEPSS.mp4
2) Toute commande que j'ai utilisée pour l'instant hors robocopy me retourne les fichiers d'un dossier "LAP" pourtant comme les autres après ceux du dossier "UZ"
3) Et parce que j'ai besoin de critères d'exclusion: 1 des dossiers (Records) contient à sa racine des fichiers .ts qui seront copiés et autres extensions qui seront exclues mais plusieurs sous-dossiers (au nom de chaque film) et comprenant chacun plusieurs .ts eux à exclure avec pour particularité de toujours s'appeler 00n.ts où n est un seul chiffre variable, il faut dans ces conditions soit exclure 00*.ts, soit exclure tous les dossiers au sens de robocopy de niveau 3.
Mais bien sûr, et pendant que je suis à abuser, si tu trouves une syntaxe plus simple pour faire le job, je suis preneur.
Merci.
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
Modifié le 4 juin 2021 à 21:16
Modifié le 4 juin 2021 à 21:16
Si tu veux juste récupérer le nom du fichier vidéo sans son chemin il n'y a pas besoin d'utiliser une deuxième boucle FOR, il faut utiliser les variables de substitution comme ceci :
1) Je ne comprends pas le sens de ta phrase : faut-il exclure ou inclure les fichiers de la corbeille ?
2) Ma boucle solutionne le problème
3) Voilà comment exclure les fichiers 00*.ts :
@echo off chcp 1252 >nul set "filtre=*.avi *.ts *.mkv *.mp4 *.mpg" for /r K:\ %%A in (%filtre%) do echo %%~nxA >>C:\Users\bru\Desktop\films\films.txt
1) Je ne comprends pas le sens de ta phrase : faut-il exclure ou inclure les fichiers de la corbeille ?
2) Ma boucle solutionne le problème
3) Voilà comment exclure les fichiers 00*.ts :
@echo off chcp 1252 >nul set "filtre=*.avi *.ts *.mkv *.mp4 *.mpg" for /r K:\ %%A in (%filtre%) do echo %%~nxA | findstr /v /r "^00[0-9].ts" >>C:\Users\bru\Desktop\films\films.txt
brucine
Messages postés
18384
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
28 décembre 2024
2 729
Modifié le 4 juin 2021 à 21:33
Modifié le 4 juin 2021 à 21:33
Nickel pour éviter la 2ème boucle, merci (il va falloir maintenant que je suis retraité que je prenne un peu de temps pour re-potasser la ligne de commandes...).
1) Pour la poubelle: à l'idéal elle devrait être vide et apparaît sous Windows comme telle, le problème ne devrait dons pas se poser; mais en attendant de la vider réellement manu militari, non, bien sûr, je ne veux pas les fichiers mp4 qui s'y trouvent, mais conserver ceux qui n'y sont pas.
2) Non, non, la boucle ne résout pas le problème alphabétique, fin (partielle) du fichier, les 2 premiers étaient dans le dossier UZ, les 3 suivants dans le dossier LAP (pour L apostrophe, la passerelle multimedia n'aime pas):
Un_long_dimanche_fiancailles1.ts
Un_long_dimanche_fiancailles2.ts
Lhorloger_de_Saint_Paul.avi
Larmee_du_crime.avi
Lete_meurtrier.ts
3) Le dossier K:\Records (à la racine comme K:\LAP ou K:\UZ) comporte à sa propre racine (partiel):
La_leçon_de_piano.ts, La_leçon_de_piano.info, La_leçon_de_piano.ts.ast, La_leçon_de_piano.ts.lck: le script ne garde que le 1er et c'est parfait.
Mais il y a aussi un dossier K:\Records\La_leçon_de_piano qui contient:
00n.dvr, 00n.ts, info3.dvr, ici n vaut de 1 à 3, pour un film plus long ça peut aller jusqu'à 7 (le disque est en FAT32 parce que l'enregistreur ne supporte pas autre chose et saucissonne le film en autant de morceaux de 1 Go).
Tout ce qui s'y trouve n'y est qu'en attendant que je recolle les morceaux hors pub dans un seul fichier hors \Records ou parce que ça n'est pas possible (par exemple échec sur les formats de sous-titres), mais je n'en ai jamais besoin puisque le titre se trouve de toute façon dans le fichier bidon .ts (1 Ko !!!) à la racine de \Records
La dernière syntaxe que tu m'as gentiment fournie (et que je suis aller déchiffrer sur ss64, je mourrai moins bête) place en outre les fameux fichiers de \Records en tête de gondole, partiel:
La_leçon_de_piano.ts (racine de \Records)
cheval_de_guerre.ts
000.ts (sous-dossiers de \Records, 1 par nom)
001.ts
002.ts
000.ts
000.ts
001.ts
002.ts
003.ts
$IJKEPSS.mp4 (Poubelle)
$ILZHB8S.mp4
36_quai_des_orfevres.avi
Apocalypse_now.avi
1) Pour la poubelle: à l'idéal elle devrait être vide et apparaît sous Windows comme telle, le problème ne devrait dons pas se poser; mais en attendant de la vider réellement manu militari, non, bien sûr, je ne veux pas les fichiers mp4 qui s'y trouvent, mais conserver ceux qui n'y sont pas.
2) Non, non, la boucle ne résout pas le problème alphabétique, fin (partielle) du fichier, les 2 premiers étaient dans le dossier UZ, les 3 suivants dans le dossier LAP (pour L apostrophe, la passerelle multimedia n'aime pas):
Un_long_dimanche_fiancailles1.ts
Un_long_dimanche_fiancailles2.ts
Lhorloger_de_Saint_Paul.avi
Larmee_du_crime.avi
Lete_meurtrier.ts
3) Le dossier K:\Records (à la racine comme K:\LAP ou K:\UZ) comporte à sa propre racine (partiel):
La_leçon_de_piano.ts, La_leçon_de_piano.info, La_leçon_de_piano.ts.ast, La_leçon_de_piano.ts.lck: le script ne garde que le 1er et c'est parfait.
Mais il y a aussi un dossier K:\Records\La_leçon_de_piano qui contient:
00n.dvr, 00n.ts, info3.dvr, ici n vaut de 1 à 3, pour un film plus long ça peut aller jusqu'à 7 (le disque est en FAT32 parce que l'enregistreur ne supporte pas autre chose et saucissonne le film en autant de morceaux de 1 Go).
Tout ce qui s'y trouve n'y est qu'en attendant que je recolle les morceaux hors pub dans un seul fichier hors \Records ou parce que ça n'est pas possible (par exemple échec sur les formats de sous-titres), mais je n'en ai jamais besoin puisque le titre se trouve de toute façon dans le fichier bidon .ts (1 Ko !!!) à la racine de \Records
La dernière syntaxe que tu m'as gentiment fournie (et que je suis aller déchiffrer sur ss64, je mourrai moins bête) place en outre les fameux fichiers de \Records en tête de gondole, partiel:
La_leçon_de_piano.ts (racine de \Records)
cheval_de_guerre.ts
000.ts (sous-dossiers de \Records, 1 par nom)
001.ts
002.ts
000.ts
000.ts
001.ts
002.ts
003.ts
$IJKEPSS.mp4 (Poubelle)
$ILZHB8S.mp4
36_quai_des_orfevres.avi
Apocalypse_now.avi
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
Modifié le 4 juin 2021 à 21:32
Modifié le 4 juin 2021 à 21:32
brucine
Messages postés
18384
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
28 décembre 2024
2 729
4 juin 2021 à 21:43
4 juin 2021 à 21:43
Je ne le conteste pas et c'est logique, mais pas chez moi; c'est un dossier que j'ai renommé il y a quelque temps (toujours en L) mais qui n'a rien de particulier par rapport aux autres (même date de création, mêmes attributs...).
Pendant que je suis là, je n'avais pas regardé de près, la syntaxe que tu m'as proposée n'alphabétise pas dans chaque dossier, par exemple dans le dossier K:\LE:
Le_secret_de_Brokeback_Mountain.avi
Le_vieux_fusil.ts
Le_grand_bleu.ts
Le_nom_de_la_rose.ts
Pendant que je suis là, je n'avais pas regardé de près, la syntaxe que tu m'as proposée n'alphabétise pas dans chaque dossier, par exemple dans le dossier K:\LE:
Le_secret_de_Brokeback_Mountain.avi
Le_vieux_fusil.ts
Le_grand_bleu.ts
Le_nom_de_la_rose.ts
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
4 juin 2021 à 21:44
4 juin 2021 à 21:44
Ok je m'en occupe ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
brucine
Messages postés
18384
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
28 décembre 2024
2 729
4 juin 2021 à 21:55
4 juin 2021 à 21:55
Je vais te donner des cheveux blancs...
La poubelle, c'est réglé, je l'ai tuée sous Dos, un souci de moins.
L'arborescence DIR K: donne bien \Records en tête de gondole et \LAP à la fin, voilà pourquoi votre fille est muette (et problème qui n'apparaît pas avec robocopy).
La passerelle est casse-dépendante, mais pas Dos (Records au lieu de RECORDS, et de toute façon c'est R...).
Je cherche en même temps ce que je trouve pour ces dossiers, quant au sous-dossier de \Records, à part l'exclusion totale du dossier ou tous les fichiers 00*.ts?
Merci
La poubelle, c'est réglé, je l'ai tuée sous Dos, un souci de moins.
L'arborescence DIR K: donne bien \Records en tête de gondole et \LAP à la fin, voilà pourquoi votre fille est muette (et problème qui n'apparaît pas avec robocopy).
La passerelle est casse-dépendante, mais pas Dos (Records au lieu de RECORDS, et de toute façon c'est R...).
Je cherche en même temps ce que je trouve pour ces dossiers, quant au sous-dossier de \Records, à part l'exclusion totale du dossier ou tous les fichiers 00*.ts?
Merci
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
4 juin 2021 à 22:33
4 juin 2021 à 22:33
Est-ce que c'est mieux comme ça :
@echo off chcp 1252 >nul set "filtre=*.avi *.ts *.mkv *.mp4 *.mpg" cd /d K: for /f "delims=" %%A in ('dir /b /s /on %filtre% ^| sort') do ( if not "%%~pA"=="\$RECYCLE.BIN\" (echo %%~nxA | findstr /v /r "^00[0-9]\." >>C:\Users\bru\Desktop\films\films.txt) ) pause exit
brucine
Messages postés
18384
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
28 décembre 2024
2 729
>
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 juin 2021 à 22:42
4 juin 2021 à 22:42
Immense progrès, un peu long à vérifier.
A priori, la machine fait ce qu'on lui dit et met les fichiers de \Records à R:
Rommel.avi
cheval_de_guerre.ts
Il_etait_une_fois_dans_louest.ts
La_leçon_de_piano.ts
Serie_noire.ts
Il est impossible de les ré-alphabétiser, dans un de mes essais de redirection en 2 temps, j'avais conservé les backslashs pour Records (en faisant l'écho à la troisième tabulation délimitée pour tous les autres et à la deuxième pour \Records).
A \T, je n'ai que les fichiers The_tartempion, et pas Titanic, Top_Gun (mais j'ai Te...).
Et je n'ai pas \UZ
A priori, la machine fait ce qu'on lui dit et met les fichiers de \Records à R:
Rommel.avi
cheval_de_guerre.ts
Il_etait_une_fois_dans_louest.ts
La_leçon_de_piano.ts
Serie_noire.ts
Il est impossible de les ré-alphabétiser, dans un de mes essais de redirection en 2 temps, j'avais conservé les backslashs pour Records (en faisant l'écho à la troisième tabulation délimitée pour tous les autres et à la deuxième pour \Records).
A \T, je n'ai que les fichiers The_tartempion, et pas Titanic, Top_Gun (mais j'ai Te...).
Et je n'ai pas \UZ
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
>
brucine
Messages postés
18384
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
28 décembre 2024
Modifié le 4 juin 2021 à 22:56
Modifié le 4 juin 2021 à 22:56
Je n'ai pas dit mon dernier mot, je vais les alphabétiser de gré ou de force ;)
@echo off chcp 1252 >nul set "filtre=*.avi *.ts *.mkv *.mp4 *.mpg" cd /d K: (for /f "delims=" %%A in ('dir /b /s /on %filtre% ^| sort') do ( if not "%%~pA"=="\$RECYCLE.BIN\" (echo %%~nxA | findstr /v /r "^00[0-9]\.") )) >"C:\Users\bru\Desktop\films\temp.txt" type "C:\Users\bru\Desktop\films\temp.txt" | sort >"C:\Users\bru\Desktop\films\films.txt" pause exit
brucine
Messages postés
18384
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
28 décembre 2024
2 729
>
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 juin 2021 à 23:12
4 juin 2021 à 23:12
Absolument parfait sinon que tu as oublié de supprimer le fichier temp (je rajouterai la ligne pour l'itération suivante du script).
Merci infiniment.
Mais plutôt que de recopier bêtement une recette de cuisine, même sophistiquée, si tu as à l'occasion un moment pour la traduction: je ne suis pas sûr de ton pipe "sort" et, suite à l'histoire de poubelle (qui ne sert plus au moins jusqu'à la prochaine grève des éboueurs), je suppose que la sentence findstr sert à virer les fichiers ts parasites de \Records?
Encore une fois merci.
Merci infiniment.
Mais plutôt que de recopier bêtement une recette de cuisine, même sophistiquée, si tu as à l'occasion un moment pour la traduction: je ne suis pas sûr de ton pipe "sort" et, suite à l'histoire de poubelle (qui ne sert plus au moins jusqu'à la prochaine grève des éboueurs), je suppose que la sentence findstr sert à virer les fichiers ts parasites de \Records?
Encore une fois merci.
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
>
brucine
Messages postés
18384
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
28 décembre 2024
Modifié le 4 juin 2021 à 23:25
Modifié le 4 juin 2021 à 23:25
Oui le FINDSTR sert à exclure les fichiers qui correspondent à cette REGEX : 00n.
Le TYPE affiche la liste de vidéos et le pipe SORT permet de le classer par ordre alphabétique.
Le premier SORT (au niveau de la boucle) peut être supprimé.
Vu qu'il n'y a plus besoin de gérer la poubelle, mon IF devient inutile mais il n'empêche pas le bon fonctionnement du script.
Tu m'excuseras pour le fichier temp, ce n'est pas un oubli c'est juste un peu de fainéantise, je me suis dit que tu pourrais te charger de cette tâche ingrate ;)
Est-ce que tu n'as pas de problème dans ta liste finale concernant les caractères accentués ou bien les cédilles ?
Le TYPE affiche la liste de vidéos et le pipe SORT permet de le classer par ordre alphabétique.
Le premier SORT (au niveau de la boucle) peut être supprimé.
Vu qu'il n'y a plus besoin de gérer la poubelle, mon IF devient inutile mais il n'empêche pas le bon fonctionnement du script.
Tu m'excuseras pour le fichier temp, ce n'est pas un oubli c'est juste un peu de fainéantise, je me suis dit que tu pourrais te charger de cette tâche ingrate ;)
Est-ce que tu n'as pas de problème dans ta liste finale concernant les caractères accentués ou bien les cédilles ?