2010-09-13 9 views
0

Nous avons un fichier unique dans un répertoire fixe qui portera le nom database-x.x.x.zip où x.x.x est un numéro de version qui peut changer.Déterminer le nom de fichier dynamique dans le script batch DOS?

Nous voulons créer un script batch qui va décompresser ce fichier - nous pouvons utiliser 7zip pour décompresser le fichier à partir d'un script batch mais nous devons être en mesure de passer le nom du fichier à 7zip - comment déterminer le nom du fichier dans un script batch étant donné que le nom du fichier ne sera pas constant?

Mise à jour

RÉALISÉ je fournir plus de détails .. Le script a besoin de décompresser une archive puis exécutez un fichier fourmi qui était dans l'archive:

"C:\Program Files\7-Zip\CommandLine\7za.exe" x %FILE% 
ant -f %UNZIPPED_ARCHIVE_DIR%\db.xml 
+0

avez-vous résolu cela? – Rudu

Répondre

0

utiliser le fantastique boucle

à partir de la ligne de commande

for /f "tokens=*" %f in ('dir database-?.?.?.?.zip /b') do 7za xxx %f 

du fichier batch

for /f "tokens=*" %%f in ('dir database-?.?.?.?.zip /b') do 7za xxx %%f 

où xxx est les options passe à 7zip

+0

Peut-être un ou deux points d'interrogation sont là et? ne correspond qu'à un seul caractère (les numéros de version peuvent facilement être à plusieurs chiffres) – Rudu

0

Source:extract.bat:

@echo off 
::: extract.bat - Extract all database-*.zip files in the given folder 
::: usage: extract.bat [folder] 
:::  folder - Search for files here (defaults to current folder) 

set search=database-*.zip /b 
if "%~1" neq "" set search=%1\%search% 

for /f "tokens=*" %%f in ('dir %search%') do (
    7z x %%f %%~nf 
    ant -f %%~nf\db.xml 
) 

Si vous avez vraiment besoin d'exclure zips de base de données qui ne sont pas suivez le format du dossier de version (par exemple s'il y en a un qui s'appelle database-old.zip et qui ne devrait pas être extrait), alors vous devrez trouver un matcher regex pour la ligne de commande dans Windows - qui est possible. Cela-ou- si vous conservez vos numéros de version à un seul chiffre, vous pouvez utiliser la correspondance de caractère unique ?.

Vous pouvez également ajouter une vérification (avant la ligne 7z...) pour vous assurer que le dossier n'existe pas déjà et faire quelque chose si c'est le cas.

Questions connexes