[batch] Agir sur fichiers selon partie nom
Résolu
danieliiitooo
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
danieliiitooo Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
danieliiitooo Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Une nouvelle problématique en batch (Je deviens fou...rhaaaa)
Dans le répertoire test\ se trouvent des fichiers nommés de la sorte:
aaaa_bbbb.pdf
aaaa_bbbb.pdf
aaaa_bbbb.pdf
aaaa_bbbb.pdf
aaaa_bbbb.pdf
ou aaaa et bbbb sont des caractères numeriques.
Le fichier listing.txt contient une liste de references de type
cccc
cccc
cccc
cccc
ou cccc sont des caractères numériques.
Je souhaiterai déplacer les fichiers dont cccc = bbbb dans le répertoire test2
Exemple:
for /F "tokens=1-2" %%a in (listing.txt) do move "test\%%b_%%a.pdf" "test2\%%b.sec"
Les contraintes étant:
Le fichier listing.txt ne contient qu'un seul et unique tokens et non deux. (Donc ma commande ne peut fonctionner)
Je dois à tout prix conserver le début du fichier (aaaa)
Voilà voilou, je m'en sort pas...
Raison pour laquelle je demande à l'aide.
Merci d'avance,
Une nouvelle problématique en batch (Je deviens fou...rhaaaa)
Dans le répertoire test\ se trouvent des fichiers nommés de la sorte:
aaaa_bbbb.pdf
aaaa_bbbb.pdf
aaaa_bbbb.pdf
aaaa_bbbb.pdf
aaaa_bbbb.pdf
ou aaaa et bbbb sont des caractères numeriques.
Le fichier listing.txt contient une liste de references de type
cccc
cccc
cccc
cccc
ou cccc sont des caractères numériques.
Je souhaiterai déplacer les fichiers dont cccc = bbbb dans le répertoire test2
Exemple:
for /F "tokens=1-2" %%a in (listing.txt) do move "test\%%b_%%a.pdf" "test2\%%b.sec"
Les contraintes étant:
Le fichier listing.txt ne contient qu'un seul et unique tokens et non deux. (Donc ma commande ne peut fonctionner)
Je dois à tout prix conserver le début du fichier (aaaa)
Voilà voilou, je m'en sort pas...
Raison pour laquelle je demande à l'aide.
Merci d'avance,
A voir également:
- [batch] Agir sur fichiers selon partie nom
- Fichier batch - Guide
- Batch renommer une partie du nom de plusieurs fichiers - Guide
- Fichiers epub - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Nom de l'adresse - Forum Réseaux sociaux
3 réponses
Si j'ai bien compris tu a des fichier du style:
4685_4440.pdf
4685_4441.pdf
4685_4442.pdf
4685_4443.pdf
Et listing.txt avec dedans:
4684
4442
4862
Et si la deuxième partie de un des fichier pdf est egal a un nombre du fichier listing.txt sa déplace le fichier dans un autre dossier.
Donc dans cet exemple 4685_4442.pdf sera déplacé.
C'est bien sa ?
Merci
Bilou
4685_4440.pdf
4685_4441.pdf
4685_4442.pdf
4685_4443.pdf
Et listing.txt avec dedans:
4684
4442
4862
Et si la deuxième partie de un des fichier pdf est egal a un nombre du fichier listing.txt sa déplace le fichier dans un autre dossier.
Donc dans cet exemple 4685_4442.pdf sera déplacé.
C'est bien sa ?
Merci
Bilou
Bon se n'est pas grave tu ne répond pas.
Bon si c'est bien se que j'ai compris voila comment il faut faire.
Je te fait 2 exemple:
1er:
2ème:
Pour les 2 exemple:
- Il faut mettre le batch a coter du dossier test.
- Et le fichier listing dans le dossier test avec les .pdf
PS:
Le nom du dossier avec les point signifie que tu revient au dossier parent.(Je c'est sa veut rien dire ^^)
Le m'explique.
Imaginons tu fait un batch avec:
Et que se batch est dans c:\test
Si tu le lance le fichier salut.txt sera créé dans c:\
Car le point fait revenir au dossier parent, donc c:\
Tu peut très bien en mettre 2 ou 3.
Si tu met dans ton batch:
Et qu'il est dans c:\test\super-test
Le fichier salut.txt sera toujours dans c:\
Voila j'espère t'avoir aider même si tu ne répond pas.
Bilou
Bon si c'est bien se que j'ai compris voila comment il faut faire.
Je te fait 2 exemple:
1er:
@echo off setlocal enableDelayedExpansion for /r "test\" %%i in (*.pdf) do ( for /f %%j in ('type test\listing.txt') do ( set i=%%~ni set i1=!i:~0,4! set i2=!i:~5,9! if %%j==!i2! ( if not exist test2\ md test2\ move test\!i1!_!i2!.pdf .\test2\ > NUL ) ) ) setlocal DisableDelayedExpansion pause
2ème:
@echo off for /f %%i in ('type test\listing.txt') do ( if not exist test2\ md test2\ move test\????_%%i.pdf .\test2\ > NUL ) pause
Pour les 2 exemple:
- Il faut mettre le batch a coter du dossier test.
- Et le fichier listing dans le dossier test avec les .pdf
PS:
Le nom du dossier avec les point signifie que tu revient au dossier parent.(Je c'est sa veut rien dire ^^)
Le m'explique.
Imaginons tu fait un batch avec:
@echo off echo Salut >> .\salut.txt pause
Et que se batch est dans c:\test
Si tu le lance le fichier salut.txt sera créé dans c:\
Car le point fait revenir au dossier parent, donc c:\
Tu peut très bien en mettre 2 ou 3.
Si tu met dans ton batch:
@echo off echo Salut >> ..\salut.txt pause
Et qu'il est dans c:\test\super-test
Le fichier salut.txt sera toujours dans c:\
Voila j'espère t'avoir aider même si tu ne répond pas.
Bilou