1 votes

Recherche d'extensions audio dans un dossier

J'essaie de vérifier dans un dossier de fichiers audio que les extensions mp3, flac et wav N'EXISTENT PAS. Si aucune des trois n'existe, j'envoie un message indiquant qu'il n'y a pas de fichiers audio dans le dossier.

J'ai créé un fichier batch en utilisant comme exemple la commande FOR que j'ai trouvée dans ce post :
loop-through-files-in-a-folder

Cependant, lorsque j'exécute le fichier batch, le message apparaît même s'il y a des fichiers audio dans le dossier, voir le code ci-dessous :

@echo off
chcp 65001
cls
ENDLOCAL
SETLOCAL ENABLEEXTENSIONS

For %%A In ("C:\Users\%username%\Desktop\Audio Folder\*.mp3" "C:\Users\%username%\Desktop\Audio Folder\*.flac" "C:\Users\%username%\Desktop\Audio Folder\*.wav") Do (
    (If Not Exist "%%~xA" Set "flag=MISSING")
)

set "ESC="
for /F %%d in ('echo prompt $E ^| cmd') do (set "ESC=%%d")

If Defined flag ( 
 SETLOCAL EnableExtensions DisableDelayedExpansion
 echo %ESC%[31mThere are no audio extensions in the folder! Exit and check which files are in the folder. (e=exit^)%ESC%[0m
 SETLOCAL EnableDelayedExpansion
 set /p r=
 IF /i "%r%"=="e" goto notfound 
)

:notfound
echo.
exit

J'ai fait plusieurs tests et je n'ai pas pu, je ne sais pas si j'ai fait une erreur dans la commande for. Comment puis-je contrôler mon dossier et vérifier qu'il n'y a pas de fichier avec une extension audio ?

2voto

rgenito Points 101

Je pense qu'un for La boucle est exagérée ici. Essayez simplement de lister les fichiers et d'agir en fonction du niveau d'erreur :

pushd "C:\Users\%username%\Desktop\Audio Folder\"
dir /b *.wav *.mp3 *.flac >nul 2>&1 && goto :found
popd
echo no files present
goto :eof
:found
popd
echo at least one audio file present.

&& agit comme "si le fichier précédent a réussi (fichier(s) trouvé(s)) alors". Si vous avez besoin de l'inverse, || c'est "si la commande précédente a échoué (aucun fichier trouvé) alors"

1voto

harrymc Points 394411

Votre commande FOR est défectueuse. En plus d'être exécutée pour chaque fichier, je n'aime pas la partie "If Not Exist".

Ce code (non testé) devrait faire mieux :

IF EXIST "C:\Users\%username%\Desktop\Audio Folder\*.mp3" SET "found=FOUND"
IF EXIST "C:\Users\%username%\Desktop\Audio Folder\*.flac" SET "found=FOUND"
IF EXIST "C:\Users\%username%\Desktop\Audio Folder\*.wav" SET "found=FOUND"

IF NOT DEFINED found (

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X