2010-10-03 25 views
1

exemple 1Comment obtenir mon script batch pour utiliser une commande dans un répertoire récursif?

@echo off 
for %%a in (precomp.exe) do set pc=%%~fa 
for /r %%a in (*.pcf) do ( 
    pushd %%~dpa 
    echo [%pc% -r %%~nxa] 
    %pc% -r %%~nxa 
    popd 
) 

Quand je lance la chauve-souris je reçois precomp.exe est une commande inconnue je precomp dans le dossier avec le script. Mais il ne fonctionnera que si je copie precompt à chaque sous-répertoire et chaque dossier qui contient un fichier .pcf

Essayé une approche différente en utilisant 2 scripts

script1 

for /r %%i in (*.pcf) do call sr2 "%%~pi" "%%i" 
script 2 
pushd %1     
precomp -r %2  
popd   

fonctionnent dans les deux scripts mais seulement si je copie precomp en Ever dossier et tous les sous-dossiers. S'il vous plaît aider comme je sais qu'il doit être loin de faire le script utiliser le precomp dans le dossier avec le script

Répondre

0

Vous pouvez modifier temporairement la variable d'environnement PATH pour inclure le chemin de precomp:

par exemple:

setlocal 
set PATH=%PATH%;%~dp0 
for /r %%i in (*.pcf) do (
    pushd "%%~pi" 
    precomp -r %%i 
    popd 
) 

ou utiliser le chemin de precomp directement:

for /r %%i in (*.pcf) do %~dp0\precomp -r %%i 
+0

Presque travaillé votre première solution, mais hélas il ne marche pas :(semble comme precomp repose sur une dll dans le même dossier que le script et precomp.But quand je cours le script im getting n'a pas pu déterminer la taille du fichier.Ill continuer à essayer si :) Merci pour votre aide cependant. un pas de plus – kam

+0

Hm, les DLL doivent être récupérées dans le même répertoire que l'exe (et le PATH) et non dans le répertoire de travail actuel. Le répertoire de travail actuel est-il également important? Parce que la seconde approche ne le change pas et devrait donc fonctionner telle quelle. – Joey

+0

Je ne peux pas définir le répertoire de travail en tant que chemin absolu, car cela changera en fonction de la préférence d'installation de l'utilisateur final qui bidouillera avec votre deuxième solution, mais quand je l'ai exécuté, la chauve-souris vient de sortir. J'ai un autre regard merci pour votre aide joey – kam