0
votes

Fichier de lot- Supprimer le contenu du dossier et le dossier parent

Je fais le répertoire suivant au début de mon fichier de commandes pour stocker du contenu temporaire:

"% userprofile% \ téléchargements \ versionCheckwilldelete" p> blockQuote>

Je souhaite supprimer ce dossier et tout son contenu. p>

Ce qui suit supprime uniquement les données du dossier mais pas le dossier lui-même: P>

 @echo off

:version_chk

SET USER_VER=1.1.2-RC

ECHO * * * * * * * * * * * * *
ECHO CHECKING FOR UPDATES...
ECHO * * * * * * * * * * * * *

cd "%userprofile%\Downloads"
    mkdir "%userprofile%\Downloads\VersionCheckWillDelete"

cd "%userprofile%\Downloads\VersionCheckWillDelete"

powershell -Command "Invoke-WebRequest https://github.com/KSanders7070/AIRPORT_ALIAS_CREATION/blob/master/Version_Check -OutFile 'version_check.HTML'"

findstr "VERSION-" "version_check.HTML" >> "GitHub_Version.txt"

cd "%userprofile%\Downloads\VersionCheckWillDelete"

for /f "delims=" %%x in (GitHub_Version.txt) do set GH_VER_STRING_ORIGINAL=%%x

for /f "tokens=2 delims=<" %%x in ("%GH_VER_STRING_ORIGINAL%") do set GH_VER_STRING_FIRST_HALF=%%x

SET "GH_VER=%GH_VER_STRING_FIRST_HALF:*VERSION-=%"

if %USER_VER% == %GH_VER% GOTO NORMAL_PROCESS

:UPDATE_AVAIL

CLS

START "" "https://github.com/KSanders7070/AIRPORT_ALIAS_CREATION/releases"

ECHO * * * * * * * * * * * * *
ECHO     UPDATE AVAILABLE
ECHO * * * * * * * * * * * * *
ECHO.
ECHO.
ECHO GITHUB VERSION: %GH_VER%
ECHO YOUR VERSION:   %USER_VER%
ECHO.
ECHO.
ECHO PLEASE CLOSE THIS BATCH FILE AND GO DOWNLOAD THE MOST RECENT UPDATE AVAILABLE:
ECHO.
ECHO https://github.com/KSanders7070/AIRPORT_ALIAS_CREATION/releases
ECHO.
ECHO.
ECHO OR YOU MAY PRESS ANY KEY TO CONTINUE USING THIS VERSION.
ECHO.
ECHO.

cd "%userprofile%\Downloads"
rd /S /Q "%userprofile%\Downloads\VersionCheckWillDelete\"
PAUSE

:NORMAL_PROCESS

CLS

cd "%userprofile%\Downloads"
rd /S /Q "%userprofile%\Downloads\VersionCheckWillDelete\"

ECHO Your BATCH file is the most up to date version.

PAUSE


0 commentaires

3 Réponses :


0
votes

Pour supprimer le répertoire, vous devez utiliser cette commande. XXX


2 commentaires

Ce n'est pas pour Windows cmd.exe.


'RM' n'est pas reconnu comme une commande interne ou externe, un programme opérable ou un fichier de commandes.



0
votes

solution: Supprimer la ligne de démarrage "URL" autorisée à supprimer le dossier. Je ne sais pas pourquoi il dépendait du chrome mais cela résout le problème. Donc, placer la commande RD avant la démarrage "" La commande fait que tout fonctionne pour moi.


0 commentaires

0
votes

Il n'y avait absolument aucune raison de modifier le répertoire sur % userprofile% \ téléchargements \ versioncheckwilldelete , dans la première instance. De plus, il n'y a probablement aucune raison d'utiliser l'emplacement lorsque c'est l'un des objectifs du répertoire % Temp% . Peu importe que vous choisissez, vous n'en avez vraiment besoin que pour le fichier version_check.html que vous analyse, alors pourquoi ne pas la mettre directement dans l'emplacement choisi, au lieu de créer un nouveau répertoire et de le supprimer ensuite . (de cette façon dont vous n'avez besoin que de supprimer le fichier si nécessaire, je m'attendrais à ce que le fichier serait écrasé de toute façon) .

Cela dit, c'est probablement comment je ferais ce que je ferais quoi Vous faites: xxx


9 commentaires

Veuillez noter @ksanders, que votre version actuelle affiche comme 1.1.2-RCX , pas 1.1.2-rc , donc le script que vous avez publié ne fonctionne pas avec la version actuelle. Je suppose que pour que cela fonctionne, vous auriez besoin de fournir une nouvelle version du script avec chaque version. Alors s'il vous plaît assurez-vous que vous avez pris en compte cela. En outre, à cause de l'inadéquation, assurez-vous que toutes les modifications que vous effectuez actuellement ne sont pas pour une version plus ancienne, par opposition à celle actuelle.


Compo- merci pour cette restructuration et pardonnez-vous au retard de ma réponse, car je suis nouveau à cela et ne considérez pas l'étiquette commune pour ces types de forums. J'aime comment votre code n'a pas besoin de la nécessité d'exporter le FindStr en tant que fichier texte et tout. Je prendrai vos conseils sur la modification du dossier Temp. J'ai apporté quelques modifications à ce que vous proposez pour des raisons de continuité pour mes autres scripts de fichiers de lots ainsi que de petits changements tels que la prise en compte de la version d'une batte pourraient ne pas commencer par un numéro.


De plus, votre PowerShell WebRequest n'aimait pas mes variables pour une raison quelconque, je suis rentré d'utiliser mon PowerShell. Si vous avez des suggestions sur la façon de gérer cela à l'avenir, je suis toutes les oreilles! : D J'ai une certaine satisfaction que les fichiers que mes processus de chauve-souris seront nettoyés afin que je pense que je vais quitter le RD là-bas, à moins que vous ne voie aucun inconvénient réel à cela? Je vous ai remercié spécialement dans une remarque au début du script et sur cette sortie de la batte sur GH. Découvrez le nouveau script ici: Github.com/ksanders7070/batch_file_version_check


Merci pour les commentaires @ksanders. Pourriez-vous développer ce que vous entendez par "WebRequest n'aimais pas mes variables", cela peut m'aider, car les seules variables utilisées dans cette ligne sont % __ appdir __% , qui résoudra toujours % Systemroot% \ system32 \ , (ou % \ syswow64 \ sur un système 64 bits couru à partir d'un cmd.exe instance) Quelles que soient les modifications apportées à vos variables d'environnement et % userprofile% que vous pouvez autoriser powershell à développer, si vous préférez, c'est-à-dire $ env: userprofile . Quant à la commande rd est votre décision, je l'ai laissée dans le code ci-dessus pour vous, sans distinction.


Lorsque je prends votre ligne de code pour PS et remplacez l'URL exacte avec la variable de l'URL, il renvoie l'erreur suivante: la chaîne manque à la chaîne: ". + CatégorieInfo: ParserError: (:) [], PARENTCONTAINSERRORRECORDEXT + PARENTQUALIDERRORRORID : TerminatorexpecedAtendOfstring


Exemple:% __ appdir __% windowspowershell \ v1.0 \ powershell.exe -Noprofile -Command "invoke-webrequest -uuri \"% github_version_chk_url% "-outfile \"% userprofile% \ téléchargements \ VersionCheckwilldele \ Version_che CK.HTML \ ""


Les travaux suivants: PowerShell -Command "Invoke-WebRequest% github_version_chk_url% -Outfile 'Version_Check.html'"


Vous n'avez pas utilisé la même syntaxe que je faisais @ksanders. En supposant que % github_version_chk_url% ne soit pas enfermé avec des doubles quantités, (Ça ne devrait pas être) , alors la syntaxe correspondante serait la suivante: % __ appdir __% windowspowershell \ v1 .0 \ POWERSHELL.EXE -NOPOFILE -COMMAND "INVOKE-wEBREQUEST -URI \"% GITUB_VERSION_CHK_URL% \ "-Outfile \"% userprofile% \ Téléchargements \ versionCheckwilldelee \ "" . Votre exemple n'a pas échappé à la doublequote imbriquée de fermeture après le chemin -uRi avec une barre oblique inverse.


Vous êtes très bien. J'ai utilisé votre code ici et cela a fonctionné. Cependant, mon code fonctionne aussi. Quel est le pro / con pour utiliser le mien vs le vôtre? Mine: PowerShell -Command "Invoke-WebRequest% github_version_chk_url% -Outfile 'Version_Check.html'"