2010-08-06 4 views
1

J'essaye de faire un raccourci relatif en utilisant un fichier batch et un programme pour transformer le lot dans un programme exe avec une icône.suivant, précédent dossier parallèle

J'ai besoin d'un 'raccourci' pour ouvrir le prochain dossier parallèle alfabétique dans une fenêtre de l'explorateur et un autre pour ouvrir le précédent. Idéalement, je voudrais même fermer la fenêtre de l'explorateur utilisée pour le doubleclick.

je jusqu'à présent:

@echo off 
echo %cd% 
for %%a in ("%cd%") do set folder=%%~na 
pushd .. 
echo %folder% 
echo . 
dir /A:D /B 
pause 

% le dossier% a le nom du dossier (pas chemin!) D'où le lot est exécuté.

la ligne: dir/A: D/B vous donne une sortie de plusieurs lignes en vous donnant tous les dossiers parallèles (parce que je monte d'un niveau en utilisant pushd ..). J'ai vraiment besoin de trouver un moyen de rechercher la valeur de% fodler% et de choisir la ligne ci-dessus, ou en dessous.

J'ai essayé quelque chose en utilisant/f mais ce n'est pas très pratique pour traiter plusieurs lignes au lieu d'une seule chaîne.

anny idées?

Répondre

0

Même si je ne comprends pas exactement ce que vous voulez obtenir, l'extrait suivant devrait faire ce que vous voulez. Il suffit d'ajouter à votre script:

setlocal enabledelayedexpansion 

for /f %%a in ('dir /b /ad /on') do (

    @rem shift the current value through the variables 
    set previous=!current! 
    set current=!next! 
    set next=%%a 

    @rem check if the "current" value is the right one 
    if "!current!"=="%folder%" goto :found 
) 

@rem if we get here the loop has finished without %current% having the expected value 
@rem but we need to check if it was the last folder in the directory 
if "%next%"=="%folder%" (
    set previous=%current% 
    set current=%next% 
    set next= 
    goto :found 
) 

endlocal 

@rem exit here if no match is found (should never happen) 
goto :eof 

@rem variables should have valid values 
:found 
echo %previous% 
echo %current% 
echo %next% 

Explication:

Les 3 variables previous, current et next sont l'utilisation comme un registre à décalage. Dans chaque itération de boucle de la valeur de répertoire courant est décalée d'un endroit à travers les variables

A la fin du déplacement de la variable current est testé pour le dossier désiré

Si la boucle se termine avant que la condition est vraie, ce signifie que le dernier dossier est le bon, d'où le décalage.

espoir qui aide ...

+0

Désolé, je exidently ajouté le commentaire précédent dans une réponse, de toute façon, je l'a ajouté à la prochaine version: "% suivant%" "" si == goto: eof
ensemble nextpath =% cd% \% suivant%
echo% nextpath%
explorer.exe "% nextpath%"
sortie
au lieu de
i aimé voir un linefeed, mais ceux-ci sont supprimés par le commentaire fait exactement ce qui devrait, mais comment puis-je fermer l'ancienne fenêtre? celui-ci apparaît juste ontop de celui où le lot est exécuté à partir de – user361191

Questions connexes