J'essaye de faire un script qui fonctionnera constamment en arrière-plan. Son but est de détecter les lecteurs flash USB, les disques durs externes ou tout autre appareil inscriptible que vous connecteriez à votre ordinateur. Une fois qu'il en a détecté un, il copiera un fichier à la racine de ce périphérique. Voici mon code (les lignes d'écho pour le débogage sont plus clairs):La variable de niveau d'erreur ne change pas après une erreur ..?
@echo off
:loop
for /F "tokens=1*" %%a in ('fsutil fsinfo drives') do (
for %%c in (%%b) do (
for /F "tokens=4" %%d in ('fsutil fsinfo drivetype %%c') do (
if %%d equ amovible (
echo Found out that %%c is removable. Trying to echo the content...
dir %%c >NUL
echo Error: %errorlevel%
if %errorlevel%==0 (
echo Errorlevel is 0! Copying...
if not exist %%c\test.txt (
copy .\test.txt %%c\test.txt
echo.
)
) else (
echo Errorlevel isn't 0. Looks like the drive isn't here, or is unavailable. Aborting copying...
echo.
)
)
)
)
)
TIMEOUT 2
goto :loop
Et est là le problème. La condition "if% errorlevel% == 0" est supposée vérifier si la commande "dir %% c> NUL" a réussi, donc si errorlevel est 0, cela signifie qu'il y a un système de fichiers sur l'appareil, et ce n'est pas comme une carte vide lecteur ou un lecteur de disquette vide. La chose est quand j'exécute mon code, errorlevel est toujours 0, et je ne peux pas comprendre pourquoi ("echo Error:% errorlevel%" le dit). Donc, le fichier test.txt copie sur mon lecteur flash USB, donc cela fonctionne essentiellement, la chose est quand il s'agit de copier le fichier sur mon lecteur de disquette, une boîte d'erreur apparaît, disant que je devrais insérer un périphérique dans le lecteur , c'est pourquoi je veux faire ce contrôle errorlevel. Donc, si quelqu'un a une solution, s'il vous plaît, aidez-moi, je suis vraiment coincé. Merci d'avance.
vous devez utiliser [expansion retardée] (http://ss64.com/nt/delayedexpansion.html) ('' ErrorLevel), parce que sinon, vous obtenez le 'ErrorLevel'! présent lorsque le bloc entier entre parenthèses (boucle) est analysé ... – aschipfl
Whoaaw, merci l'homme! Travaillé comme un charme! – Alpha
Vous pouvez bien sûr utiliser le classique 'if not errorlevel 1 ...' qui ne nécessite pas d'extension retardée. – LotPings