[BAT] Reclasser des fichiers r

Le
Sinmian
Bonsoir à tous,


J'ai un brin cherché et trouvé des choses, certaines à exécuter dans
Powershell mais la chose doit tourner sur nos postes Win XP du boulot sans
droits particuliers (user simple) sans nécessiter de nouvelle installation
(pas de Powershell ni Robocopy) : le CMD de Win XP s'impose un brin.

Un .bat à coller à la racine du répertoire à traiter ?


ex: B_xxxxxxxxx_cote_19190728_001.xml ainsi jusqu'au 016.(de 2 à 20)
fichiers sachant que de droite à gauche, il y a y a (presque) toujours le
même nombre de caractères.


En fait nous partons de fichiers et descripteurs rangés par extention au
fond d'une arboresce de dates.


Exemple de fichiers et chemin :

\partageumérisationsfondsB_xxxxxxxxx_cote_1919B_xxxxxxxxx_cote_19190728EXTB_xxxxxxxxx_cote_19190728_001.ext

et ainsi de suite avec quatre autres types d'extension à trois caractères,
le nommage étant constant par ailleurs.


pour donner, de manière récursive (le nombre de dossiers imbriqué au
origine/destination est le même), et _sans_couiner_ s'il y a déjà un
dossier qui existe (une fusion donc — je ne sais ce qui se cache en
coulisses mais Text2Folders ne couine pas, il fusionne vraisemblement).


\partageumérisationsfonds_classescoteext191919190719190728B_xxxxxxxxx_cote_19190728_001.ext


Le problème du premier dossier contenant la cote qui est variablement
longue (3 à 8 car.) que ce soit depuis la gauche ou de la droite du nom de
fichier.
Mais si le traitement se fait plus sélectivement à partir d'un sous dossier
du serveur, p. ex. \partageumérisationsfondsB_xxxxxxxxx_cote* ça
limite les dégats et les problèmes de variables.


Si l'un de vous est plus doué que moi, jongle plus aisément avec les divers
arguments.

La dernière fois que j'ai eu des fichiers à déplacer par bennes que j'ai
fait ça en CLI c'était il y a une quinzaine d'années, sur Mac OS X.
Pfiou, bref, mais ce n'était que du déplacement pas très sorcier, en fait.
Tout au plus des regex mais j'ai tout oublié et franchement, je n'ai pas
très envie de vider trois boites de Daf*lg*n codéine pour ça.
Si la prochaine est dans dix ans, j'aurais à nouveau oublié sans pratiquer
entre deux.


J'ai bien trouvé plein de petits outils GUI gratuits pour créer tout une
arborescence de dossiers vides en partant d'un listing (Text2Folders) ou
des renommeurs par lots divers (mais je m'entends bien avec Renamer) qui
nous ont épargné les canaux carpiens.
Je peine à trouver un outil qui déplacerait des fichiers vers des
répertoires crées à partir du nom même de ces fichiers (euh, plusieurs
dizaines milliers à ventiler en clicodrome)

Ça dépasse mes compétences, nécessitant des notions (ou plus) de script
"batch" pour Windows XP. Très franchement, j'ai jeté un cil à ce qui se
trouvait en ligne.


Merci d'avance.

XPost fcoms-w et fcoms-wp, FU2 sur le second


X-Post to: fr.comp.os.ms-windows,fr.comp.os.ms-windows.programmation
Fu2: fr.comp.os.ms-windows.programmation
--
Didier
envoyé depuis mon PC
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sinmian
Le #26350055
Bonjour à tous,

Le problème n'en est plus un.

Merci.

--
envoyé depuis mon téou
Sinmian
Le #26350039
On Tue, 21 Apr 2015 20:59:57 +0200, Sinmian wrote:

J'ai un brin cherché et trouvé des choses, certaines à exécuter dans
Powershell mais la chose doit tourner sur nos postes Win XP du boulot sans
droits particuliers (user simple) sans nécessiter de nouvelle installation
(pas de Powershell ni Robocopy) : le CMD de Win XP s'impose un brin.



Je me suis un peu amusé mais ça ne marche qu'avec Powershell qui est sur ma
machine maison sous W7.

$images = dir *.*
foreach ($image in $images)
{
$filename = $image
$destinationfolderpath = $filename -replace
'(............)(.....)(.)(....)(..)(..)(.....)(...)$','/$2/$8/$4/$4_$5/$4_$5$6/'
md $destinationfolderpath >$null
move-item $image -Destination $destinationfolderpath
}

Ouais, bon, j'aurais plutôt du chercher en CMD.


--
envoyé depuis mon PC
Jean-Claude
Le #26350056
Bonjour,

je ne suis pas sûr d'avoir bien compris l'arborescence que vous utilisez,
mais peut-être quelque chose de ce genre :

@echo off
rem pour lister tous les fichiers à traiter, qq soit leur niveau dans
l'arborescence
for /r %%i in (\partagenumérisationfonds*.*) do call :sub1 "%%i" "%%~ni"
goto :eof

:sub1
rem %1 = nom complet du fichier à traiter
rem %2 = nom simple du fichier
set a=%~2
rem on remplace les _ par des espaces pour décomposer le nom du fichier
call %1 %a:_= %
goto :eof

:sub2
rem %1 = nom complet du fichier à traiter
rem %5 = date au format ssaammjj
set b=%5
rem on constitue le nom du dossier : ssaassaammssaammjj
set d=%b:~0,4%%b:~0,6%%b:~0,8%
rem s'il n'existe pas on le crée
if not exist %d% md %d%
rem copier le fichier de son ancien emplacement vers le nouvel emplacement
echo copie de \partagenumérisationfonds_classescoteext%1 vers %d%
goto :eof

Jean-Claude
Sinmian
Le #26350096
On Wed, 22 Apr 2015 13:38:32 +0200, Jean-Claude wrote:

Bonjour,



Bonsoir Jean-Claude,

Pourquoi j'ai indiqué ça "résolu" ce midi peu avant que vous ne postiez,
c'est que non seulement l'adaptation d'un PowerShell script trouvé sur le
net tombait en marche chez moi "en local", tout en pensant (à tord) que mon
alter-ego de notre fonds numérique disposait de Win7 sur sa machine mais
c'est celle qu'il attaque "à distance" qui héberge nos fichiers à trier sur
laquelle, hélas, il ne peut "lancer en tant qu'admin" et en "user", les
batches que j'ai conconcté essuient un refus.

Et Powershel 1, dont je doutais même qu'il existât sur ma brouette sous XP
SP3 tant les installs sont réduites au minimum (même pas de Démineur, tout
juste si on a Charmap) et on n'a même pas le droit de formater une clé USB,
c'est dire. Forcément, le PS 2.0 de Win7 ne cause pas pareil...

Vais-je finir par sous-traiter à la maison en heure sup' ? (hélas, pas de
télé-travail).J'ai plus fait ça hier soir pour ne pas rester sur mon cul un
peu pour le fun, c'est même marrant, un brin de trial & error.



Ceinture, bretelles et casque blindé, avant de poster ici par précaution,
sachant qu'ils ont tous deux la barque pleine, j'avais sollicité un gars de
la DSI (plutôt unixien, il me semblait bien, il a botté en touche ayant
d'autres soucis) et l'admin de notre SIGB, vrai codeur fou, en train de
goupiller un changement majeur dans notre usine à gaz, ça ne pouvait tomber
plus mal, l'ennuyer autant que le "promener", il s'y est pourtant gentiment
collé dès la fin d'aprem et mouliné assez vite un truc en VBS/.NET : je
clique, il me demande le dossier à traiter, reconstruit, disperse, ventile
(façon puzzle©) puis supprime les répertoires sources que si vides. Marche
du tonnerre.


je ne suis pas sûr d'avoir bien compris l'arborescence que vous utilisez,
mais peut-être quelque chose de ce genre :



Un prestataire externe nous a remis un stock de scans classés ainsi sur le
disque dur livré qui restera à l'abri en coulisses :

cote_canard/aaaa/aaaa_mm/aaaa_mmjj/TIF/Id_cote_aaaammjj_001...x.tif
/JPG/id.jpg
/PDF (avec recherche full texte)
/XML)
/CSV) fichiers de liens des OCR en qté
variables selon les nombres de pages
/TXT)

Et ainsi de suite pour l'édition suivante le jour suivant, la semaine etc.
pas trop gênant pour une machine mais humainement merdique pour l'accès à
la main (encore que F3 fasse des miracles mais passons).



Or, pour un accès plus aisé sur notre serveur en interne y compris les
non-initiés voulant transmettre une repro (qui ne connaissent pas toujours
"F3") ainsi que sur l'actuelle base en ligne, nous classons plutôt nos
scans "internes" (qui roupillaient en coulisses depuis des années, sans
utilité que la sauvegarde de feuilles qui partent en co...mpote) ainsi :

cote/TIF/aaaa/aaaa_mm/aaaa_mmjj/Id_cote_aaaammjj_001...x.tif
/JPG/aaaa/aaaa_mm/aaaa_mmjj/ id .jpg
/PDF )
/XML ) pas d'OCR sur nos scans in-house (problème réglé)
/CSV )
/TXT )

On a imaginé renverser le classement du prestataire pour les fichiers
annexes de ces 20000 scans (ne serait-ce que pour les TIF et JPG).


Je ne me voyais vraiment pas aller chercher chacun au fond de
l'arborescence (F3 est mon ami) le remettre ailleurs à la pogne, j'y serai
encore quand il y aura le ternet sur Mars, mon canal carpien morflerait, on
a déjà un siècle de retard... Brèfle...



Je le disais, je suis une quiche en shell-script de Winwin, alors, j'ai
copié collé dans Notepad++, passé ça au bon langage, encodage, ctrl+S.

Je jette le fichier à la racine d'un dossier contenant un échantillon de
fichiers.

@echo off
rem pour lister tous les fichiers à traiter, qq soit leur niveau dans
l'arborescence
for /r %%i in (\partagenumérisationfonds*.*) do call :sub1 "%%i" "%%~ni"


^^^^^^^^
Dans ce but, j'ai juste remplacé ^^^ ça par (*.txt) (fichiers légers, en
relative quantité).

goto :eof

:sub1



Ah, ça, je sais, c'est des boucles. : )

rem %1 = nom complet du fichier à traiter
rem %2 = nom simple du fichier
set a=%~2
rem on remplace les _ par des espaces pour décomposer le nom du fichier



Ah, oui... l'underscore (on en a négligé un entre mm et jj) est bien
pratique pour séparer (réflexion du codeur fou, fondant son VBS là dessus).

echo copie de \partagenumérisationfonds_classescoteext%1 vers %d%



Là, pour faire bonne figure avec "*.txt" plus haut, je n'ai mis que "%1".


Ça me rappelle la Java des bombes atomiques de Vian, ça a eu un effet drôle
ou navrant (my bad) au double-clic : tous les fichiers txt se sont ouverts
dans NP++, j'ai un peu bidouilé pour corriger le tir... (vive le "fermer
tout ce qui est à droite), en vain.

Désolé de saboter votre joli boulot. Merci beaucoup, Jean-Claude.

--
Didier, envoyé depuis mon PC
la seule chose qui compte
c’est l’endroit où elle tombe(BV)
Gloops
Le #26351234
Le 21/04/2015 20:59, Sinmian a écrit :
Bonsoir à tous,


J'ai un brin cherché et trouvé des choses, certaines à exécuter dans
Powershell mais la chose doit tourner sur nos postes Win XP du boulot sans
droits particuliers (user simple) sans nécessiter de nouvelle installation
(pas de Powershell ni Robocopy) : le CMD de Win XP s'impose un brin.

Un .bat à coller à la racine du répertoire à traiter ?


ex: B_xxxxxxxxx_cote_19190728_001.xml ainsi jusqu'au ...016.(de 2 à 20)
fichiers sachant que de droite à gauche, il y a y a (presque) toujours le
même nombre de caractères.


En fait nous partons de fichiers et descripteurs rangés par extention au
fond d'une arboresce de dates.


Exemple de fichiers et chemin :

\partagenumérisationsfondsB_xxxxxxxxx_cote_1919B_xxxxxxxxx_cote_19190728EXTB_xxxxxxxxx_cote_19190728_001.ext

et ainsi de suite avec quatre autres types d'extension à trois caractères,
le nommage étant constant par ailleurs.


pour donner, de manière récursive (le nombre de dossiers imbriqué au
origine/destination est le même), et _sans_couiner_ s'il y a déjà un
dossier qui existe (une fusion donc — je ne sais ce qui se cache en
coulisses mais Text2Folders ne couine pas, il fusionne vraisemblement).


\partagenumérisationsfonds_classescoteext191919190719190728B_xxxxxxxxx_cote_19190728_001.ext


Le problème du premier dossier contenant la cote qui est variablement
longue (3 à 8 car.) que ce soit depuis la gauche ou de la droite du nom de
fichier.
Mais si le traitement se fait plus sélectivement à partir d'un sous dossier
du serveur, p. ex. \partagenumérisationsfondsB_xxxxxxxxx_cote* ça
limite les dégats et les problèmes de variables.


Si l'un de vous est plus doué que moi, jongle plus aisément avec les divers
arguments.

La dernière fois que j'ai eu des fichiers à déplacer par bennes que j'ai
fait ça en CLI c'était... il y a une quinzaine d'années, sur Mac OS X.
Pfiou, bref, mais ce n'était que du déplacement pas très sorcier, en fait.
Tout au plus des regex mais j'ai tout oublié et franchement, je n'ai pas
très envie de vider trois boites de Daf*lg*n codéine pour ça.
Si la prochaine est dans dix ans, j'aurais à nouveau oublié sans pratiquer
entre deux.


J'ai bien trouvé plein de petits outils GUI gratuits pour créer tout une
arborescence de dossiers vides en partant d'un listing (Text2Folders) ou
des renommeurs par lots divers (mais je m'entends bien avec Renamer) qui
nous ont épargné les canaux carpiens.
Je peine à trouver un outil qui déplacerait des fichiers vers des
répertoires crées à partir du nom même de ces fichiers (euh, plusieurs
dizaines milliers à ventiler en clicodrome...)

Ça dépasse mes compétences, nécessitant des notions (ou plus) de script
"batch" pour Windows XP. Très franchement, j'ai jeté un cil à ce qui se
trouvait en ligne.


Merci d'avance.

XPost fcoms-w et fcoms-wp, FU2 sur le second


X-Post to: fr.comp.os.ms-windows,fr.comp.os.ms-windows.programmation
Fu2: fr.comp.os.ms-windows.programmation





Bonjour,

Je n'ai pas bien compris, et si il y a tant que ça de fichiers le
tâtonnement n'est vraisemblablement pas la meilleure méthode.

Pas sûr que j'aie le temps de m'y intéresser beaucoup, mais si un as des
batchs débarque là dans quelques semaines il arrivera plus facilement au
résultat en comprenant du premier coup.
Gloops
Le #26351238
Le 03/05/2015 12:17, Gloops a écrit :
Le 21/04/2015 20:59, Sinmian a écrit :
Bonsoir à tous,


J'ai un brin cherché et trouvé des choses, certaines à exécuter dans
Powershell mais la chose doit tourner sur nos postes Win XP du boulot
sans
droits particuliers (user simple) sans nécessiter de nouvelle
installation
(pas de Powershell ni Robocopy) : le CMD de Win XP s'impose un brin.

Un .bat à coller à la racine du répertoire à traiter ?


ex: B_xxxxxxxxx_cote_19190728_001.xml ainsi jusqu'au ...016.(de 2
à 20)
fichiers sachant que de droite à gauche, il y a y a (presque) toujours le
même nombre de caractères.


En fait nous partons de fichiers et descripteurs rangés par extention au
fond d'une arboresce de dates.


Exemple de fichiers et chemin :

\partagenumérisationsfondsB_xxxxxxxxx_cote_1919B_xxxxxxxxx_cote_19190728EXTB_xxxxxxxxx_cote_19190728_001.ext


et ainsi de suite avec quatre autres types d'extension à trois
caractères,
le nommage étant constant par ailleurs.


pour donner, de manière récursive (le nombre de dossiers imbriqué au
origine/destination est le même), et _sans_couiner_ s'il y a déjà un
dossier qui existe (une fusion donc — je ne sais ce qui se cache en
coulisses mais Text2Folders ne couine pas, il fusionne vraisemblement).


\partagenumérisationsfonds_classescoteext191919190719190728B_xxxxxxxxx_cote_19190728_001.ext



Le problème du premier dossier contenant la cote qui est variablement
longue (3 à 8 car.) que ce soit depuis la gauche ou de la droite du
nom de
fichier.
Mais si le traitement se fait plus sélectivement à partir d'un sous
dossier
du serveur, p. ex. \partagenumérisationsfondsB_xxxxxxxxx_cote* ça
limite les dégats et les problèmes de variables.


Si l'un de vous est plus doué que moi, jongle plus aisément avec les
divers
arguments.

La dernière fois que j'ai eu des fichiers à déplacer par bennes que j'ai
fait ça en CLI c'était... il y a une quinzaine d'années, sur Mac OS X.
Pfiou, bref, mais ce n'était que du déplacement pas très sorcier, en
fait.
Tout au plus des regex mais j'ai tout oublié et franchement, je n'ai pas
très envie de vider trois boites de Daf*lg*n codéine pour ça.
Si la prochaine est dans dix ans, j'aurais à nouveau oublié sans
pratiquer
entre deux.


J'ai bien trouvé plein de petits outils GUI gratuits pour créer tout une
arborescence de dossiers vides en partant d'un listing (Text2Folders) ou
des renommeurs par lots divers (mais je m'entends bien avec Renamer) qui
nous ont épargné les canaux carpiens.
Je peine à trouver un outil qui déplacerait des fichiers vers des
répertoires crées à partir du nom même de ces fichiers (euh, plusieurs
dizaines milliers à ventiler en clicodrome...)

Ça dépasse mes compétences, nécessitant des notions (ou plus) de script
"batch" pour Windows XP. Très franchement, j'ai jeté un cil à ce qui se
trouvait en ligne.


Merci d'avance.

XPost fcoms-w et fcoms-wp, FU2 sur le second


X-Post to: fr.comp.os.ms-windows,fr.comp.os.ms-windows.programmation
Fu2: fr.comp.os.ms-windows.programmation





Bonjour,

Je n'ai pas bien compris, et si il y a tant que ça de fichiers le
tâtonnement n'est vraisemblablement pas la meilleure méthode.

Pas sûr que j'aie le temps de m'y intéresser beaucoup, mais si un as des
batchs débarque là dans quelques semaines il arrivera plus facilement au
résultat en comprenant du premier coup.





Oups, pas vu la redirection ...
Sinmian
Le #26351243
On Sun, 03 May 2015 12:17:35 +0200, Gloops wrote:


Bonjour,



Salut,

Je n'ai pas bien compris, et si il y a tant que ça de fichiers le
tâtonnement n'est vraisemblablement pas la meilleure méthode.



Hé, hé. Pour 20000 scans un total de 100 kfichiers, il y a des quotidiens
avec 800 à 1000 scans et x fois autant de descriptifs divers mais aussi
quelques petits titres (comme le canard publié depuis un camp de
prisonniers) en bien moindre quantité qui permettent de tester la
moulinette sur des copies avant tout à moindre frais.

Pas sûr que j'aie le temps de m'y intéresser beaucoup, mais si un as des
batchs débarque là dans quelques semaines il arrivera plus facilement au
résultat en comprenant du premier coup.



C'est gentil d'y montrer de l'intérêt tout de même. D'ici quelques
semaines, au delà de relever le challenge, ce sera trop tard.
Encore que la manip à la main prendrait/aurait pris un temps fou.

En fait, comme dit plus haut, un de mes collègue malgré beaucoup de boulot
à côté s'y est collé (à la fois pour le fun et parce que comprenant l'enjeu
"10 mn de code pour lui" —sérieux, ça ne lui a pas pris plus— vs "des
dizaines d'heures à la pogne") et sa moulinette fonctionne à merveille, de
manière prudente.
Ça va très vite sur des petits fichiers descriptifs et un peu moins sur les
PDF dont les derniers étaient en cours de ventilation samedi soir, je les
trouverais rangés en rentrant de week-end.


La moulinette sera réutilisable sur deux disques durs de scans d'autres
types de documents.

--
envoyé depuis mon PC
Sinmian
Le #26351242
On Sun, 03 May 2015 12:21:22 +0200, Gloops wrote:

Oups, pas vu la redirection ...



:-)

Ne me souvenant plus si Dialog était réglé pour le signalement, je l'avais
collé à la main.

--
envoyé depuis mon PC
Publicité
Poster une réponse
Anonyme