J'ai des images tif dans un répertoire qui ont la structures suivantes:
000020001.tif
000020002.tif
etc...
je voudrais les renommer dans la forme suivante:
1020001.tif
1020002.tif
Alors j'ai pensé faire un truc du genre:
For /f "tokens=1-2 delims=." %%m in ('dir /b C:\89\??????????.tif') do
(
set /A BB=1000000+%%m
rename C:\89\%%m.%%n C:\89\%BB%.%%n
)
Mais:
1/ Je ne suis pas sure de ma variable BB
2/ De mon passge de paramètre vers C:\89\%BB%.%%n
Je pense que là j'ai besoin d'un coup de pouce (ou de pied je vous
laisse le choix ...)
D'abord, après un DO (entre tes parenthèses), on ne peut pas tout faire. Il est préférable de passer par un sous-programme (voir exemple ci-dessous).
Ensuite, avec SET /A, un nombre qui commence par 0 (le caractère "0" - zéro), est considéré comme étant en octal, et convertit en décimal pour le calcul. Si cela ne te gêne pas, l'exemple ci-dessous te conviendra. Sinon, il faudra passer par %VAR:~-n%
@echo off setlocal For /f "tokens=1-2 delims=." %%m in ('dir /b C:89??????????.tif') do CALL :SUB %%m %%n endlocal goto :EOF
:SUB echo rename C:89%1.%2 C:89%BB%.%2 goto :EOF
@-salutations -- Michel Claveau
Bonjour !
Il y a deux pièges...
D'abord, après un DO (entre tes parenthèses), on ne peut pas tout faire.
Il est préférable de passer par un sous-programme (voir exemple
ci-dessous).
Ensuite, avec SET /A, un nombre qui commence par 0 (le caractère "0" -
zéro), est considéré comme étant en octal, et convertit en décimal pour
le calcul. Si cela ne te gêne pas, l'exemple ci-dessous te conviendra.
Sinon, il faudra passer par %VAR:~-n%
@echo off
setlocal
For /f "tokens=1-2 delims=." %%m in ('dir /b C:89??????????.tif') do
CALL :SUB %%m %%n
endlocal
goto :EOF
D'abord, après un DO (entre tes parenthèses), on ne peut pas tout faire. Il est préférable de passer par un sous-programme (voir exemple ci-dessous).
Ensuite, avec SET /A, un nombre qui commence par 0 (le caractère "0" - zéro), est considéré comme étant en octal, et convertit en décimal pour le calcul. Si cela ne te gêne pas, l'exemple ci-dessous te conviendra. Sinon, il faudra passer par %VAR:~-n%
@echo off setlocal For /f "tokens=1-2 delims=." %%m in ('dir /b C:89??????????.tif') do CALL :SUB %%m %%n endlocal goto :EOF
:SUB echo rename C:89%1.%2 C:89%BB%.%2 goto :EOF
@-salutations -- Michel Claveau
MCI \(ex do ré Mi chel la si do\) [MVP]
Re !
Aaaaaaarrrrrrggggghhhhhh !!!!!
Comme d'habitude, le mode texte-brut coupe intempestivement les lignes. Le CALL :SUB..... doit suivre le DO (sur la même ligne)
@+ -- Michel Claveau
@echo off setlocal For /f "tokens=1-2 delims=." %%m in ('dir /b C:89??????????.tif') do CALL :SUB %%m %%n endlocal goto :EOF
:SUB echo rename C:89%1.%2 C:89%BB%.%2 goto :EOF
Re !
Aaaaaaarrrrrrggggghhhhhh !!!!!
Comme d'habitude, le mode texte-brut coupe intempestivement les lignes.
Le CALL :SUB..... doit suivre le DO (sur la même ligne)
@+
--
Michel Claveau
@echo off
setlocal
For /f "tokens=1-2 delims=." %%m in ('dir /b C:89??????????.tif')
do CALL :SUB %%m %%n
endlocal
goto :EOF
Décidément, ce n'est pas le jour... J'ai, en plus, oublié une ligne, dans mon copié/collé... Voilà donc la bonne version (j'espère) :
@echo off setlocal For /f "tokens=1-2 delims=." %%m in ('dir /b C:89??????????.tif') do CALL :SUB %%m %%n endlocal goto :EOF
:SUB set /A BB00000+%1 echo rename C:89%1.%2 C:89%BB%.%2 goto :EOF
@+ -- MCI
Gilles LAURENT [MVP]
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le message de news: | Bonsoir a tous,
Bonjour,
| J'ai des images tif dans un répertoire qui ont la structures | suivantes: 000020001.tif | 000020002.tif | etc... | je voudrais les renommer dans la forme suivante: | 1020001.tif | 1020002.tif [...]
En complément des réponses précédentes, ci-dessous un script VBScript permettant de répondre à votre besoin. Celui-ci filtre à l'aide d'une expression régulière les fichiers avec l'extension .tif selon le format spécifié puis procède au renomage.
--- Couper ici : CodeSnippet.vbs --- Set oRe=New RegExp: oRe.IgnoreCase=True oRe.Pattern="^(d{9}).tif$" Set oFs=CreateObject("Scripting.FileSystemObject") Set oFolder=oFs.GetFolder("C:89") For Each oFile In oFolder.Files If oRe.Test(oFile.Name) Then ' 000020001.tif => 1020001.tif sFileName=oRe.Execute(oFile.Name)(0).SubMatches(0)+1000000 oFile.Name=sFileName & ".tif" End If Next --- Couper ici : CodeSnippet.vbs ---
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le
message de
news:mn.9d3a7d8c00c06bfe.55474@NOSPAMlaposte.net
| Bonsoir a tous,
Bonjour,
| J'ai des images tif dans un répertoire qui ont la structures
| suivantes: 000020001.tif
| 000020002.tif
| etc...
| je voudrais les renommer dans la forme suivante:
| 1020001.tif
| 1020002.tif
[...]
En complément des réponses précédentes, ci-dessous un script VBScript
permettant de répondre à votre besoin. Celui-ci filtre à l'aide d'une
expression régulière les fichiers avec l'extension .tif selon le format
spécifié puis procède au renomage.
--- Couper ici : CodeSnippet.vbs ---
Set oRe=New RegExp: oRe.IgnoreCase=True
oRe.Pattern="^(d{9}).tif$"
Set oFs=CreateObject("Scripting.FileSystemObject")
Set oFolder=oFs.GetFolder("C:89")
For Each oFile In oFolder.Files
If oRe.Test(oFile.Name) Then
' 000020001.tif => 1020001.tif
sFileName=oRe.Execute(oFile.Name)(0).SubMatches(0)+1000000
oFile.Name=sFileName & ".tif"
End If
Next
--- Couper ici : CodeSnippet.vbs ---
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le message de news: | Bonsoir a tous,
Bonjour,
| J'ai des images tif dans un répertoire qui ont la structures | suivantes: 000020001.tif | 000020002.tif | etc... | je voudrais les renommer dans la forme suivante: | 1020001.tif | 1020002.tif [...]
En complément des réponses précédentes, ci-dessous un script VBScript permettant de répondre à votre besoin. Celui-ci filtre à l'aide d'une expression régulière les fichiers avec l'extension .tif selon le format spécifié puis procède au renomage.
--- Couper ici : CodeSnippet.vbs --- Set oRe=New RegExp: oRe.IgnoreCase=True oRe.Pattern="^(d{9}).tif$" Set oFs=CreateObject("Scripting.FileSystemObject") Set oFolder=oFs.GetFolder("C:89") For Each oFile In oFolder.Files If oRe.Test(oFile.Name) Then ' 000020001.tif => 1020001.tif sFileName=oRe.Execute(oFile.Name)(0).SubMatches(0)+1000000 oFile.Name=sFileName & ".tif" End If Next --- Couper ici : CodeSnippet.vbs ---
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
---DGI972---
Méta-MCI (MVP) a présenté l'énoncé suivant :
Re-re !
Décidément, ce n'est pas le jour... J'ai, en plus, oublié une ligne, dans mon copié/collé... Voilà donc la bonne version (j'espère) :
@echo off setlocal For /f "tokens=1-2 delims=." %%m in ('dir /b C:89??????????.tif') do CALL :SUB %%m %%n endlocal goto :EOF
:SUB set /A BB00000+%1 echo rename C:89%1.%2 C:89%BB%.%2 goto :EOF
@+
Bonjour, merci pour ce petit cours en privé. J'ai essayé le code qui m'ouvre de grande perspective mais: dans le passage de la première boucle du sous programme SUB le résultat de 1000000+000020001 donne: 1008193.tif ???? et le renommage du fichier me donne c:programme>rename c:89 00020001.tif c:891008193.tif la syntaxe de la commande est incorrecte la deuxième boucle 1008194.tif c:programme>rename c:89 00020001.tif c:891008194.tif la syntaxe de la commande est incorrecte etc....
je ne vois pas pourquoi
Méta-MCI (MVP) a présenté l'énoncé suivant :
Re-re !
Décidément, ce n'est pas le jour...
J'ai, en plus, oublié une ligne, dans mon copié/collé...
Voilà donc la bonne version (j'espère) :
@echo off
setlocal
For /f "tokens=1-2 delims=." %%m in ('dir /b C:89??????????.tif')
do CALL :SUB %%m %%n
endlocal
goto :EOF
:SUB
set /A BB00000+%1
echo rename C:89%1.%2 C:89%BB%.%2
goto :EOF
@+
Bonjour,
merci pour ce petit cours en privé.
J'ai essayé le code qui m'ouvre de grande perspective mais:
dans le passage de la première boucle du sous programme SUB
le résultat de 1000000+000020001 donne:
1008193.tif ????
et le renommage du fichier me donne
c:programme>rename c:89 00020001.tif c:891008193.tif
la syntaxe de la commande est incorrecte
la deuxième boucle
1008194.tif
c:programme>rename c:89 00020001.tif c:891008194.tif
la syntaxe de la commande est incorrecte
etc....
Décidément, ce n'est pas le jour... J'ai, en plus, oublié une ligne, dans mon copié/collé... Voilà donc la bonne version (j'espère) :
@echo off setlocal For /f "tokens=1-2 delims=." %%m in ('dir /b C:89??????????.tif') do CALL :SUB %%m %%n endlocal goto :EOF
:SUB set /A BB00000+%1 echo rename C:89%1.%2 C:89%BB%.%2 goto :EOF
@+
Bonjour, merci pour ce petit cours en privé. J'ai essayé le code qui m'ouvre de grande perspective mais: dans le passage de la première boucle du sous programme SUB le résultat de 1000000+000020001 donne: 1008193.tif ???? et le renommage du fichier me donne c:programme>rename c:89 00020001.tif c:891008193.tif la syntaxe de la commande est incorrecte la deuxième boucle 1008194.tif c:programme>rename c:89 00020001.tif c:891008194.tif la syntaxe de la commande est incorrecte etc....
je ne vois pas pourquoi
Gilles LAURENT [MVP]
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le message de news: | Bonjour,
Bonjour,
| merci pour ce petit cours en privé. | J'ai essayé le code qui m'ouvre de grande perspective mais: | dans le passage de la première boucle du sous programme SUB | le résultat de 1000000+000020001 donne: | 1008193.tif ????
Car 000020001 (octal) = 8193 (décimal)
| et le renommage du fichier me donne | c:programme>rename c:89 00020001.tif c:891008193.tif | la syntaxe de la commande est incorrecte
Car la syntaxe est rename [path]filename newfilename
Une version alternative en batch :
--- Couper ici : CodeSnippet.cmd --- @echo off setlocal enabledelayedexpansion for /f "delims=." %%i in ('dir/b C:89?????????.tif') do ( set/a filename=1%%i-999000000 ren C:89%%i.tif !filename!.tif ) endlocal --- Couper ici : CodeSnippet.cmd ---
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le
message de
news:mn.a20c7d8cc67db2df.55474@NOSPAMlaposte.net
| Bonjour,
Bonjour,
| merci pour ce petit cours en privé.
| J'ai essayé le code qui m'ouvre de grande perspective mais:
| dans le passage de la première boucle du sous programme SUB
| le résultat de 1000000+000020001 donne:
| 1008193.tif ????
Car 000020001 (octal) = 8193 (décimal)
| et le renommage du fichier me donne
| c:programme>rename c:89 00020001.tif c:891008193.tif
| la syntaxe de la commande est incorrecte
Car la syntaxe est rename [path]filename newfilename
Une version alternative en batch :
--- Couper ici : CodeSnippet.cmd ---
@echo off
setlocal enabledelayedexpansion
for /f "delims=." %%i in ('dir/b C:89?????????.tif') do (
set/a filename=1%%i-999000000
ren C:89%%i.tif !filename!.tif
)
endlocal
--- Couper ici : CodeSnippet.cmd ---
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le message de news: | Bonjour,
Bonjour,
| merci pour ce petit cours en privé. | J'ai essayé le code qui m'ouvre de grande perspective mais: | dans le passage de la première boucle du sous programme SUB | le résultat de 1000000+000020001 donne: | 1008193.tif ????
Car 000020001 (octal) = 8193 (décimal)
| et le renommage du fichier me donne | c:programme>rename c:89 00020001.tif c:891008193.tif | la syntaxe de la commande est incorrecte
Car la syntaxe est rename [path]filename newfilename
Une version alternative en batch :
--- Couper ici : CodeSnippet.cmd --- @echo off setlocal enabledelayedexpansion for /f "delims=." %%i in ('dir/b C:89?????????.tif') do ( set/a filename=1%%i-999000000 ren C:89%%i.tif !filename!.tif ) endlocal --- Couper ici : CodeSnippet.cmd ---
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
---DGI972---
Gilles LAURENT [MVP] a écrit :
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le message de news:
Bonjour,
Bonjour,
merci pour ce petit cours en privé. J'ai essayé le code qui m'ouvre de grande perspective mais: dans le passage de la première boucle du sous programme SUB le résultat de 1000000+000020001 donne: 1008193.tif ????
Car 000020001 (octal) = 8193 (décimal)
et le renommage du fichier me donne c:programme>rename c:89 00020001.tif c:891008193.tif la syntaxe de la commande est incorrecte
Car la syntaxe est rename [path]filename newfilename
Une version alternative en batch :
--- Couper ici : CodeSnippet.cmd --- @echo off setlocal enabledelayedexpansion for /f "delims=." %%i in ('dir/b C:89?????????.tif') do ( set/a filename=1%%i-999000000 ren C:89%%i.tif !filename!.tif ) endlocal --- Couper ici : CodeSnippet.cmd ---
C'est beau et ca marche ...
Pour l'octal: mais c'est bien sur ... C'est du grand n'importe quoi ! Sur quelle base on compte en octal en ligne de commande ?
Gilles LAURENT [MVP] a écrit :
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le
message de
news:mn.a20c7d8cc67db2df.55474@NOSPAMlaposte.net
Bonjour,
Bonjour,
merci pour ce petit cours en privé.
J'ai essayé le code qui m'ouvre de grande perspective mais:
dans le passage de la première boucle du sous programme SUB
le résultat de 1000000+000020001 donne:
1008193.tif ????
Car 000020001 (octal) = 8193 (décimal)
et le renommage du fichier me donne
c:programme>rename c:89 00020001.tif c:891008193.tif
la syntaxe de la commande est incorrecte
Car la syntaxe est rename [path]filename newfilename
Une version alternative en batch :
--- Couper ici : CodeSnippet.cmd ---
@echo off
setlocal enabledelayedexpansion
for /f "delims=." %%i in ('dir/b C:89?????????.tif') do (
set/a filename=1%%i-999000000
ren C:89%%i.tif !filename!.tif
)
endlocal
--- Couper ici : CodeSnippet.cmd ---
C'est beau et ca marche ...
Pour l'octal: mais c'est bien sur ...
C'est du grand n'importe quoi ! Sur quelle base on compte en octal en
ligne de commande ?
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le message de news:
Bonjour,
Bonjour,
merci pour ce petit cours en privé. J'ai essayé le code qui m'ouvre de grande perspective mais: dans le passage de la première boucle du sous programme SUB le résultat de 1000000+000020001 donne: 1008193.tif ????
Car 000020001 (octal) = 8193 (décimal)
et le renommage du fichier me donne c:programme>rename c:89 00020001.tif c:891008193.tif la syntaxe de la commande est incorrecte
Car la syntaxe est rename [path]filename newfilename
Une version alternative en batch :
--- Couper ici : CodeSnippet.cmd --- @echo off setlocal enabledelayedexpansion for /f "delims=." %%i in ('dir/b C:89?????????.tif') do ( set/a filename=1%%i-999000000 ren C:89%%i.tif !filename!.tif ) endlocal --- Couper ici : CodeSnippet.cmd ---
C'est beau et ca marche ...
Pour l'octal: mais c'est bien sur ... C'est du grand n'importe quoi ! Sur quelle base on compte en octal en ligne de commande ?
---DGI972---
Gilles LAURENT [MVP] a écrit :
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le message de news:
Bonsoir a tous,
Bonjour,
J'ai des images tif dans un répertoire qui ont la structures suivantes: 000020001.tif 000020002.tif etc... je voudrais les renommer dans la forme suivante: 1020001.tif 1020002.tif
[...]
En complément des réponses précédentes, ci-dessous un script VBScript permettant de répondre à votre besoin. Celui-ci filtre à l'aide d'une expression régulière les fichiers avec l'extension .tif selon le format spécifié puis procède au renomage.
--- Couper ici : CodeSnippet.vbs --- Set oRe=New RegExp: oRe.IgnoreCase=True oRe.Pattern="^(d{9}).tif$" Set oFs=CreateObject("Scripting.FileSystemObject") Set oFolder=oFs.GetFolder("C:89") For Each oFile In oFolder.Files If oRe.Test(oFile.Name) Then ' 000020001.tif => 1020001.tif sFileName=oRe.Execute(oFile.Name)(0).SubMatches(0)+1000000 oFile.Name=sFileName & ".tif" End If Next --- Couper ici : CodeSnippet.vbs ---
Je me demande si il y a pas une caméra cachée ...
Car je vais surement avoir besoin de cette version en vbs car mon affaire est loin d'être finie ....
Il faut je trie les images tif selon leur numéros dans des répertoires du genre: 1020001.tif dans le répertoire c:89images102 pour les images de 1020000.tif a 1020099.tif c:89images102 1 pour les images de 1020100.tif a 1020199.tif c:89images102 2 pour les images de 1020200.tif a 1020299.tif etc.. jusqu'a: c:89images12099 pour les images de 1209900.tif a 1209999.tif
merci merci et merci encore
Gilles LAURENT [MVP] a écrit :
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le
message de
news:mn.9d3a7d8c00c06bfe.55474@NOSPAMlaposte.net
Bonsoir a tous,
Bonjour,
J'ai des images tif dans un répertoire qui ont la structures
suivantes: 000020001.tif
000020002.tif
etc...
je voudrais les renommer dans la forme suivante:
1020001.tif
1020002.tif
[...]
En complément des réponses précédentes, ci-dessous un script VBScript
permettant de répondre à votre besoin. Celui-ci filtre à l'aide d'une
expression régulière les fichiers avec l'extension .tif selon le format
spécifié puis procède au renomage.
--- Couper ici : CodeSnippet.vbs ---
Set oRe=New RegExp: oRe.IgnoreCase=True
oRe.Pattern="^(d{9}).tif$"
Set oFs=CreateObject("Scripting.FileSystemObject")
Set oFolder=oFs.GetFolder("C:89")
For Each oFile In oFolder.Files
If oRe.Test(oFile.Name) Then
' 000020001.tif => 1020001.tif
sFileName=oRe.Execute(oFile.Name)(0).SubMatches(0)+1000000
oFile.Name=sFileName & ".tif"
End If
Next
--- Couper ici : CodeSnippet.vbs ---
Je me demande si il y a pas une caméra cachée ...
Car je vais surement avoir besoin de cette version en vbs car mon
affaire est loin d'être finie ....
Il faut je trie les images tif selon leur numéros dans des répertoires
du genre:
1020001.tif dans le répertoire
c:89images102 pour les images de 1020000.tif a 1020099.tif
c:89images102 1 pour les images de 1020100.tif a 1020199.tif
c:89images102 2 pour les images de 1020200.tif a 1020299.tif
etc..
jusqu'a:
c:89images12099 pour les images de 1209900.tif a 1209999.tif
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le message de news:
Bonsoir a tous,
Bonjour,
J'ai des images tif dans un répertoire qui ont la structures suivantes: 000020001.tif 000020002.tif etc... je voudrais les renommer dans la forme suivante: 1020001.tif 1020002.tif
[...]
En complément des réponses précédentes, ci-dessous un script VBScript permettant de répondre à votre besoin. Celui-ci filtre à l'aide d'une expression régulière les fichiers avec l'extension .tif selon le format spécifié puis procède au renomage.
--- Couper ici : CodeSnippet.vbs --- Set oRe=New RegExp: oRe.IgnoreCase=True oRe.Pattern="^(d{9}).tif$" Set oFs=CreateObject("Scripting.FileSystemObject") Set oFolder=oFs.GetFolder("C:89") For Each oFile In oFolder.Files If oRe.Test(oFile.Name) Then ' 000020001.tif => 1020001.tif sFileName=oRe.Execute(oFile.Name)(0).SubMatches(0)+1000000 oFile.Name=sFileName & ".tif" End If Next --- Couper ici : CodeSnippet.vbs ---
Je me demande si il y a pas une caméra cachée ...
Car je vais surement avoir besoin de cette version en vbs car mon affaire est loin d'être finie ....
Il faut je trie les images tif selon leur numéros dans des répertoires du genre: 1020001.tif dans le répertoire c:89images102 pour les images de 1020000.tif a 1020099.tif c:89images102 1 pour les images de 1020100.tif a 1020199.tif c:89images102 2 pour les images de 1020200.tif a 1020299.tif etc.. jusqu'a: c:89images12099 pour les images de 1209900.tif a 1209999.tif
merci merci et merci encore
Gilles LAURENT [MVP]
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le message de news: [...] | Il faut je trie les images tif selon leur numéros dans des répertoires | du genre: | 1020001.tif dans le répertoire | c:89images102 pour les images de 1020000.tif a 1020099.tif | c:89images102 1 pour les images de 1020100.tif a 1020199.tif | c:89images102 2 pour les images de 1020200.tif a 1020299.tif | etc.. | jusqu'a: | c:89images12099 pour les images de 1209900.tif a 1209999.tif
Le code VBScript ci-dessous devrait répondre à votre besoin. Les dossiers de destination pour chaque lot d'image sont automatiquement créés s'ils n'existent pas. Le bloc séparé par une ligne vide met en évidence les adaptations réalisées :
--- Couper ici : CodeSnippet.vbs --- Set oRe=New RegExp: oRe.IgnoreCase=True oRe.Pattern="^(d{9}).tif$" Set oFs=CreateObject("Scripting.FileSystemObject") Set oSh=CreateObject("WScript.Shell") Set oFolder=oFs.GetFolder("C:89") For Each oFile In oFolder.Files If oRe.Test(oFile.Name) Then sFileName=oRe.Execute(oFile.Name)(0).SubMatches(0)+1000000
oFile.Name=sFileName & ".tif" End If Next --- Couper ici : CodeSnippet.vbs ---
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le
message de
news:mn.b24c7d8c917f6d2b.33554@NOSPAMlaposte.net
[...]
| Il faut je trie les images tif selon leur numéros dans des répertoires
| du genre:
| 1020001.tif dans le répertoire
| c:89images102 pour les images de 1020000.tif a 1020099.tif
| c:89images102 1 pour les images de 1020100.tif a 1020199.tif
| c:89images102 2 pour les images de 1020200.tif a 1020299.tif
| etc..
| jusqu'a:
| c:89images12099 pour les images de 1209900.tif a 1209999.tif
Le code VBScript ci-dessous devrait répondre à votre besoin. Les
dossiers de destination pour chaque lot d'image sont automatiquement
créés s'ils n'existent pas. Le bloc séparé par une ligne vide met en
évidence les adaptations réalisées :
--- Couper ici : CodeSnippet.vbs ---
Set oRe=New RegExp: oRe.IgnoreCase=True
oRe.Pattern="^(d{9}).tif$"
Set oFs=CreateObject("Scripting.FileSystemObject")
Set oSh=CreateObject("WScript.Shell")
Set oFolder=oFs.GetFolder("C:89")
For Each oFile In oFolder.Files
If oRe.Test(oFile.Name) Then
sFileName=oRe.Execute(oFile.Name)(0).SubMatches(0)+1000000
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le message de news: [...] | Il faut je trie les images tif selon leur numéros dans des répertoires | du genre: | 1020001.tif dans le répertoire | c:89images102 pour les images de 1020000.tif a 1020099.tif | c:89images102 1 pour les images de 1020100.tif a 1020199.tif | c:89images102 2 pour les images de 1020200.tif a 1020299.tif | etc.. | jusqu'a: | c:89images12099 pour les images de 1209900.tif a 1209999.tif
Le code VBScript ci-dessous devrait répondre à votre besoin. Les dossiers de destination pour chaque lot d'image sont automatiquement créés s'ils n'existent pas. Le bloc séparé par une ligne vide met en évidence les adaptations réalisées :
--- Couper ici : CodeSnippet.vbs --- Set oRe=New RegExp: oRe.IgnoreCase=True oRe.Pattern="^(d{9}).tif$" Set oFs=CreateObject("Scripting.FileSystemObject") Set oSh=CreateObject("WScript.Shell") Set oFolder=oFs.GetFolder("C:89") For Each oFile In oFolder.Files If oRe.Test(oFile.Name) Then sFileName=oRe.Execute(oFile.Name)(0).SubMatches(0)+1000000
oFile.Name=sFileName & ".tif" End If Next --- Couper ici : CodeSnippet.vbs ---
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
Gilles LAURENT [MVP]
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le message de news: | C'est beau et ca marche ...
Merci ;-)
| Pour l'octal: mais c'est bien sur ... | C'est du grand n'importe quoi ! Sur quelle base on compte en octal en | ligne de commande ?
It's by design !
Ci-dessous la version batch de votre précédente demande :
--- Couper ici : CodeSnippet.cmd --- @echo off setlocal enabledelayedexpansion set root=C:89 for /f "delims=." %%i in ('dir/b %root%?????????.tif') do ( set/a filename=1%%i-999000000 set folder=images!filename:~0,3!!filename:~3,1!!filename:~4,1! md %root%!folder! > nul 2>&1 move %root%%%i.tif %root%!folder!!filename!.tif ) endlocal --- Couper ici : CodeSnippet.cmd ---
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"---DGI972---" <gilles.dermigny@*NO SPAM*laposte.net> a écrit dans le
message de
news:mn.b2367d8c5dd59825.33554@NOSPAMlaposte.net
| C'est beau et ca marche ...
Merci ;-)
| Pour l'octal: mais c'est bien sur ...
| C'est du grand n'importe quoi ! Sur quelle base on compte en octal en
| ligne de commande ?
It's by design !
Ci-dessous la version batch de votre précédente demande :
--- Couper ici : CodeSnippet.cmd ---
@echo off
setlocal enabledelayedexpansion
set root=C:89
for /f "delims=." %%i in ('dir/b %root%?????????.tif') do (
set/a filename=1%%i-999000000
set folder=images!filename:~0,3!!filename:~3,1!!filename:~4,1!
md %root%!folder! > nul 2>&1
move %root%%%i.tif %root%!folder!!filename!.tif
)
endlocal
--- Couper ici : CodeSnippet.cmd ---
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr