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 ...)
"---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 ---
super super super je digère tout cela merci
Gilles LAURENT [MVP] a écrit :
"---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 ---
super super super je digère tout cela merci
---DGI972---
---DGI972--- a formulé ce lundi :
Gilles LAURENT [MVP] a écrit :
"---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 ---
super super super je digère tout cela merci
Au secours !
Il me manque une ligne de commande pour renommer les fichiers 1020001aaa.tif en 1020000F.tif
for /f "tokens=*" %%j in ('dir /b C:89???????aaa.tif') do ( set FRONT=%%j:~0,7F.tif%% ren "C:89%%j" FRONT
---DGI972--- a formulé ce lundi :
Gilles LAURENT [MVP] a écrit :
"---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
Ne pas oublier les deux " et les deux % encadrant FRONT
MCI
---DGI972---
MCI (ex do ré Mi chel la si do) [MVP] avait écrit le 24/12/2008 :
ren "C:89%%j" "%FRONT%"
Ne pas oublier les deux " et les deux % encadrant FRONT
MCI
Merci michel mais cela ne fonctionne pas comme je veux: voila le résultat de la fenêtre de ligne de commande: La variable FRONT ne marche pas et le ligne ren non plus ...
c:Programme>( set FRONT20676aaa.tif:~0,7F.tif% ren "C:891020676aaa.tif" ""
merci d'avance
MCI (ex do ré Mi chel la si do) [MVP] avait écrit le 24/12/2008 :
ren "C:89%%j" "%FRONT%"
Ne pas oublier les deux " et les deux % encadrant FRONT
MCI
Merci michel mais cela ne fonctionne pas comme je veux:
voila le résultat de la fenêtre de ligne de commande:
La variable FRONT ne marche pas et le ligne ren non plus ...
c:Programme>(
set FRONT20676aaa.tif:~0,7F.tif%
ren "C:891020676aaa.tif" ""
MCI (ex do ré Mi chel la si do) [MVP] avait écrit le 24/12/2008 :
ren "C:89%%j" "%FRONT%"
Ne pas oublier les deux " et les deux % encadrant FRONT
MCI
Merci michel mais cela ne fonctionne pas comme je veux: voila le résultat de la fenêtre de ligne de commande: La variable FRONT ne marche pas et le ligne ren non plus ...
c:Programme>( set FRONT20676aaa.tif:~0,7F.tif% ren "C:891020676aaa.tif" ""
merci d'avance
---DGI972---
Gilles LAURENT [MVP] a formulé la demande :
"---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 ---
C'est quoi la différence entre %i et %%i ? A quoi ca sert le Setlocal enabledelayedexpansion et son end local ? Pourquoi la variable filename est encdrée par des ! et non des % ? et pourquoi le terre est ronde et qu'il a autant d'injustice ? Bo j'arrête de poser trop de questions
Merci encore je suis en train de mettre bout à bout et cela prends forme sérieusement ...
Gilles LAURENT [MVP] a formulé la demande :
"---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 ---
C'est quoi la différence entre %i et %%i ?
A quoi ca sert le Setlocal enabledelayedexpansion et son end local ?
Pourquoi la variable filename est encdrée par des ! et non des % ?
et pourquoi le terre est ronde et qu'il a autant d'injustice ? Bo
j'arrête de poser trop de questions
Merci encore je suis en train de mettre bout à bout et cela prends
forme sérieusement ...
"---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 ---
C'est quoi la différence entre %i et %%i ? A quoi ca sert le Setlocal enabledelayedexpansion et son end local ? Pourquoi la variable filename est encdrée par des ! et non des % ? et pourquoi le terre est ronde et qu'il a autant d'injustice ? Bo j'arrête de poser trop de questions
Merci encore je suis en train de mettre bout à bout et cela prends forme sérieusement ...
Méta-MCI \(MVP\)
Bonjour !
C'est quoi la différence entre %i et %%i ?
Dans un FOR, il faut utiliser %%i si c'est un batch, et %i si c'est une commande (en interactif, par exemple).
A quoi ca sert le Setlocal enabledelayedexpansion et son end local ?
Les %VAR% sont remplacés par la valeur correspondante, au moment de la lecture de la ligne, et non au moment de son exécution. Comme ce qui est après un DO fait partie de la même ligne logique que le FOR (même s'il y a des parenthèses et que ça déborde sur les lignes suivantes), une affectation (set VAR=...) aura lieu au moment de l'exécution, et non au moment de la lecture de la ligne. La valeur ne sera pas remplacée comme attendu. L' "expansion retardée" permet d'utiliser ! à la place de %, pour effectuer un remplacement au moment de l'exécution. Voir SET /? pour plus (hum...) de détails.
Pourquoi la variable filename est encadrée par des ! et non des % ?
Cf le paragraphe ci-dessus.
et pourquoi le terre est ronde et qu'il a autant d'injustice ? Bo
D'abord, la Terre n'est pas vraiment ronde. Plutôt "comme une pomme vaguement écrasée". Ensuite, les pommes servant essentiellement à fabriquer du Calva, cela explique les injustices.
@+, et Joyeux Noël. -- MCI
Bonjour !
C'est quoi la différence entre %i et %%i ?
Dans un FOR, il faut utiliser %%i si c'est un batch, et %i si c'est une
commande (en interactif, par exemple).
A quoi ca sert le Setlocal enabledelayedexpansion et son end local ?
Les %VAR% sont remplacés par la valeur correspondante, au moment de la
lecture de la ligne, et non au moment de son exécution. Comme ce qui est
après un DO fait partie de la même ligne logique que le FOR (même s'il y
a des parenthèses et que ça déborde sur les lignes suivantes), une
affectation (set VAR=...) aura lieu au moment de l'exécution, et non au
moment de la lecture de la ligne. La valeur ne sera pas remplacée comme
attendu.
L' "expansion retardée" permet d'utiliser ! à la place de %, pour
effectuer un remplacement au moment de l'exécution. Voir SET /? pour
plus (hum...) de détails.
Pourquoi la variable filename est encadrée par des ! et non des % ?
Cf le paragraphe ci-dessus.
et pourquoi le terre est ronde et qu'il a autant d'injustice ? Bo
D'abord, la Terre n'est pas vraiment ronde. Plutôt "comme une pomme
vaguement écrasée".
Ensuite, les pommes servant essentiellement à fabriquer du Calva, cela
explique les injustices.
Dans un FOR, il faut utiliser %%i si c'est un batch, et %i si c'est une commande (en interactif, par exemple).
A quoi ca sert le Setlocal enabledelayedexpansion et son end local ?
Les %VAR% sont remplacés par la valeur correspondante, au moment de la lecture de la ligne, et non au moment de son exécution. Comme ce qui est après un DO fait partie de la même ligne logique que le FOR (même s'il y a des parenthèses et que ça déborde sur les lignes suivantes), une affectation (set VAR=...) aura lieu au moment de l'exécution, et non au moment de la lecture de la ligne. La valeur ne sera pas remplacée comme attendu. L' "expansion retardée" permet d'utiliser ! à la place de %, pour effectuer un remplacement au moment de l'exécution. Voir SET /? pour plus (hum...) de détails.
Pourquoi la variable filename est encadrée par des ! et non des % ?
Cf le paragraphe ci-dessus.
et pourquoi le terre est ronde et qu'il a autant d'injustice ? Bo
D'abord, la Terre n'est pas vraiment ronde. Plutôt "comme une pomme vaguement écrasée". Ensuite, les pommes servant essentiellement à fabriquer du Calva, cela explique les injustices.
@+, et Joyeux Noël. -- MCI
---DGI972---
Méta-MCI (MVP) a écrit :
Joyeux Noël
Merci
et Joyeux Noël à vous et à tous sur ce NewsGroup que j'adore ...
Méta-MCI (MVP) a écrit :
Joyeux Noël
Merci
et Joyeux Noël à vous
et à tous sur ce NewsGroup que j'adore ...