BATCH - Créer un dossier avec une partie du nom du fichier

Signaler
-
Messages postés
12846
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
25 novembre 2020
-
Bonjour à tous,

J'ai un petit soucis concernant l'élaboration d'un script. J'ai besoin de créer un dossier avec une partie du nom du fichier.

Par exemple, pour le fichier : 20200614_SAP_ZCMF_MB51_V1.csv , je dois avoir comme nom de dossier : SAP_ZCMF_MB51.
Je dois donc retirer la date et la Version.
Avez- vous des pistes ?


Voici le code que j'ai :

<@echo off

setlocal enabledelayedexpansion
for %%A in (*.csv) do (
   echo file found  %%A
   for /f "delims=" %%B in ("%%A") do set fname=%%~nB
   for /f "delims=" %%C in ("%%A") do set fextn=%%~xC
   for /f "tokens= 2,3 delims=_" %%D in ("!fname!") do set folname=%%D

   echo folder name !folname! 
   
   if not exist "!folname!" (
      echo Folder !folname! does not exist, creating
      md "!folname!"
   ) else (
   echo Folder !folname! exists
   )   
   echo Moving file %%A to folder !folname!
   move "%%A" "!folname!"   
   )
echo Finished
pause>


EDIT : Ajout des balises de code ( je t'avais déjà demandé de le faire dans une précédente question ! )

Merci d'avance,

1 réponse

Messages postés
12846
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
25 novembre 2020
3 819
Bonjour,

Une seule boucle FOR devrait suffire :

for /f "tokens=1-5 delims=_" %%A in ('dir /b *.csv') do (
echo file found %%A_%%B_%%C_%%D_%%E

echo folder name %%B_%%C_%%D

if not exist "%%B_%%C_%%D" (
echo Folder %%B_%%C_%%D does not exist, creating
md "%%B_%%C_%%D"
) else (
echo Folder %%B_%%C_%%D exists
)
echo Moving file %%A to folder %%B_%%C_%%D
move "%%A_%%B_%%C_%%D_%%E" "%%B_%%C_%%D"
)
echo Finished
pause>