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?

ntosis
la source
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
Doublage

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.

Grover
la source
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"
    )

Ce n'était pas moi
la source