2009-12-24 5 views
0

Un utilisateur me donnera un chemin absolu - disons "C: \ src" (transmis dans% 1 dans le fichier séquentiel). Ensuite, je dois trouver le répertoire intitulé "SQLScripts" qui est dans un sous-dossier de "C: \ src".Recherche du chemin absolu vers un répertoire si le chemin d'accès à la recherche est donné (dans un fichier batch)

Comment trouver le chemin absolu vers le répertoire "SQLScripts"? De plus, je ne m'inquiète pas de plusieurs instances du répertoire SQLScripts existantes. De mon Google, la solution peut impliquer une boucle for et un modificateur de lot tel que% ~ $ PATH: 1. Ce lien peut être bénéfique - Special Batch Characters.

Toutes les solutions doivent fonctionner sous Windows XP et versions ultérieures.
Notez que je suis contraint d'utiliser un fichier batch et que je ne peux pas utiliser d'autres méthodes "plus faciles" comme un simple extrait de code Python pour résoudre mon problème.

Merci!

Répondre

1

Ce code enregistre le chemin d'sqlscripts en % SQLSCRIPTSPATH% variables, et il fonctionne sur Windows XP:

DIR SQLScripts /B /P /S>tmp.txt 
for /f "delims=" %%a in (tmp.txt) do set SQLSCRIPTSPATH=%%a 
del tmp.txt 

EDIT:

Une meilleure solution (sans utiliser un fichier temporaire) proposé par Joe:

for /f "tokens=*" %%i in ('DIR SqlScripts /B /P /S') do SET SQLSCRIPTSPATH=%%i 
+1

+1, cela fera l'affaire. La variante suivante évitera la création d'un fichier temporaire tmp.txt et gérera les chemins contenant des espaces. Comme l'original, il définit SQLSCRIPTSPATH sur le dernier chemin correspondant s'il y en a plus d'un: for/f "tokens = *" %% i in ('DIR SqlScripts/B/P/S') faites SET SQLSCRIPTSPATH = %% i – Joe

+0

+1, pas de fichier temporaire, superbe! :) – SLA80

+2

Chaque fois que vous voyez 'for/f' avec une commande' dir', vous pouvez vous demander si c'est vraiment nécessaire. 'for' peut itérer sur des répertoires ou des fichiers très bien:' pour/d/r% x dans (.) faire si/i% ~ nx EQU SqlScripts set SQLSCRIPTSPATH =% ~ dpnx' – Joey

Questions connexes