我为一份清理USB病毒批处理文件中的“暂停”语句不起作用而感到烦恼,这种病毒似乎在我工作的地方很普遍。
我通过研究发现,当您调用另一个批处理文件并且它失败或具有退出语句时,可能会出现此类问题,并使用了“call”来防止它发生。
问题是,批处理文件继续运行,它不会停止,它运行得非常好,但它只忽略第一个暂停事件。
另一件事是,当我使用@echo off时,无论如何都不起作用。如果我去掉REM @echo off并从cmd运行批处理文件,则第一次运行暂停将失败,然后如果我再运行一次,则暂停将正常工作。
尽管在互联网上寻找解决方案,但我似乎找不到原因。
我保留了标题/签名的东西,只是因为它可能是其中之一的原因,但我尝试过没有它仍然不起作用。
以下是代码:
@echo off
mode con: cols=80 lines=30
title USBFix by Tamok
:Signature
echo " __ __ _______..______ _______ __ ___ ___"
echo "| | | | / || _ \ | ____|| | \ \ / /"
echo "| | | | | (----`| |_) | | |__ | | \ V / "
echo "| | | | \ \ | _ < | __| | | > < "
echo "| `--' | .----) | | |_) | | | | | / . \ "
echo " \______/ |_______/ |______/ |__| |__| /__/ \__\"
echo Par T. Tamok
echo Version 0.1
echo.
echo.
echo Bienvenue dans le programme de desinfection de clefs USB et volumes externes. Appuyez sur une touche pour continuer.
pause >nul
echo.
echo Voici une liste des disques reconnus sur votre ordinateur.
echo.
call wmic logicaldisk get caption,providername,drivetype,volumename
echo.
:Volume Check
set /p vName=Veuillez saisir la lettre correspondant au volume que vous souhaitez reparer :
if not exist %vName%:\nul goto :failed
:Repair
echo Appuyez sur une touche pour continuer la reparation ou fermez la fenetre pour quitter.
pause >nul
echo Reparation en cours, veuillez patienter...
call attrib -h -r -s /s /d %vName%:\*.*
echo Restauration des fichiers caches terminee. Suppression des fichiers infectes...
if exist %vName%:\iTunesHelper.vbe goto :vbdel
echo Pas de virus iTunesHelper.vbe.
:keep1
if exist %vName%:\*.lnk goto :lnkdel
echo Pas de fichiers .lnk.
:keep2
goto :eof
:failed
echo Cette lettre ne correspond a aucun volume. Appuyez sur une touche pour quitter.
goto :eof
:vbdel
del %vName%:\iTunesHelper.vbe
echo Virus iTunesHelper.vbe repere.
echo Suppression de iTunesHelper.vbe OK.
goto keep1
:lnkdel
del %vName%:\*.lnk
echo Suppression des fichiers .lnk OK.
goto keep2
:eof
pause >nul
:exit