2016-08-02 39 views
0

Ich habe nach einer Weile gesucht, um zu sehen, ob ich ein Skript machen kann, das in ein Unterverzeichnis geht, aber stoppt, führt einen Befehl aus und verlässt das Verzeichnis, ohne in irgendwas zu gehen der Unterverzeichnisse. Hier ist, was ich bisher habe:Schleife durch jedes Unterverzeichnis, ohne tiefer zu gehen - Batch-Skript

FOR /R "%cd%" %%G in (.) DO (
    cd %%G 
    echo %%G 
    cd .. 
) 

aber das Problem ist, dass es nur durch die einzelnen Unterverzeichnis in Gang hält, ohne zu stoppen, so sieht es wie folgt aus:

now in C:\Users\JacobGunther12\Desktop\Batch GMA Converter\(gdcw)_usp_.45_silenced_300572504\models\. 
now in C:\Users\JacobGunther12\Desktop\Batch GMA Converter\(gdcw)_usp_.45_silenced_300572504\models\weapons\. 
now in C:\Users\JacobGunther12\Desktop\Batch GMA Converter\(gdcw)_usp_.45_silenced_300572504\sound\. 
now in C:\Users\JacobGunther12\Desktop\Batch GMA Converter\(gdcw)_usp_.45_silenced_300572504\sound\impacts\. 
now in C:\Users\JacobGunther12\Desktop\Batch GMA Converter\(gdcw)_usp_.45_silenced_300572504\sound\weapons\. 
now in C:\Users\JacobGunther12\Desktop\Batch GMA Converter\(gdcw)_usp_.45_silenced_300572504\sound\weapons\usp45\. 

statt nur gehen in die erstes Unterverzeichnis aus dem Ordner "Batch GMA Converter". Gibt es eine Möglichkeit, dies zu tun?

+0

Sie müssen uns zeigen, was '% CD%' ist die Ausgabe erhalten Sie auf dem Laufenden; Ich denke, du könntest die 'for/R'-Schleife durch verschachtelte' für/D'-Schleifen ersetzen ... – aschipfl

+0

Wenn du gesunden Menschenverstand benutzt hast, kannst du% Cd% C: \ Benutzer \ JacobGunther12 \ Desktop \ Batch GMA Converter \ sagen @aschipfl –

+0

Was ist der gesunde Menschenverstand, @JacobGunther? ... nein, im Ernst, ich frage lieber das OP, weil man nie weiß, wie sie den Begriff "Unterverzeichnis" (sub to which root?) verstehen; Jede Information, die nicht in einer Frage angegeben ist, könnte falsch angenommen werden und so zu falschen Schlüssen führen ... – aschipfl

Antwort

0

Iterate durch eine statische Liste Unterverzeichnisse von dir /B /AD wie folgt erhalten:

@ECHO OFF 
SETLOCAL EnableExtensions 
set "curdir=%CD%" 
FOR /F "delims=" %%G in ('dir /B /AD') DO (
    pushd "%curdir%\%%G" 
    echo %curdir%\%%G 
    popd 
)