Comment définir un nom de dossier dans une variable pour l'utiliser dans le même fichier batch?


1

Je veux créer un fichier de commandes. Ce fichier de commandes doit rechercher dans un dossier portant le nom "Brouillon". Pour chaque sous-dossier, effectuez une recherche sur un fichier .txt "list.txt". fichier txt, puis sera exécuté une copie du dossier "Draft" dans le dossier "Ready". J'ai écrit un petit script mais j'ai quelques problèmes.

@echo off
:loop

  for /d %%i in ('dir "C:\Users\ntosis\Desktop\Draft" /ad /o:d /s /b') do ( 
  SET a=%%i
  echo %a%
  )

echo Folder is empty or does not exist
timeout /t 15
goto loop

Le problème dans cette petite partie du script est que, la variable "a" ne peut pas enregistrer le nom du dossier, si je change le echo %a%en echo Hello Worldle script n’imprimera qu’une fois le message et pas tant que la boucle sera exécutée. Des idées?


Google "enableDelayedExpansion". Mais je ne vois pas pourquoi vous avez besoin d'une variable d'environnement. Il me semble que vous pourriez simplement utiliser %%idirectement.
Dbenham


Réponses:


0

Vous pouvez probablement le faire dans une seule ligne:

for /R "C:\Users\ntosis\Desktop\Draft" %G in (list.txt) do ( type "%G" >> "C:\Users\ntosis\Desktop\Ready\list.txt"

Cela concaténera tous vos fichiers list.txt en un seul list.txt dans le dossier Ready.

Assurez-vous que votre dossier Prêt n'est pas un sous-dossier de votre dossier Brouillon, sinon vous obtiendrez des lignes dupliquées.

Si vous voulez utiliser un fichier batch, n'oubliez pas de doubler votre%:

for /R "C:\Users\ntosis\Desktop\Draft" %%G in (list.txt) do ( type "%%G" >> "C:\Users\ntosis\Desktop\Ready\list.txt"

Si vous voulez copier la structure de répertoires source complète avec vos fichiers list.txt, c'est un peu différent.


0

Donc, si j'ai bien compris la question, est-ce que je suggérerais d'utiliser whereplutôt que de dir?


@echo off && setlocal enabledelayedexpansion

for /f "tokens=*delims=\" %%i in ('where /r "C:\Users\ntosis\Desktop\Draft" "*.txt"')do (
     set "_a=%%~nxi" && cmd /v/u/ccopy "%%~i" "c:\Some\Folder\Target\!random!_%%~nxi" || (timeout 15 & echo/Error:"%%~nxi")
     set "_var_folder=%%~pi" && echo/ "%%~pi"
    )

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.