2017-06-07 8 views
-1

Ich brauche einen Schläger namens here.bat, um Dateien in den gleichen Verzeichnissen zu verarbeiten. Hier ein Beispiel:
Windows bat: wie Dateien für jedes Unterverzeichnis verarbeitet werden

mydir 
|----mybat.bat 
|----here.bat 
|----subdir 
     |-----subdir2 
       |-----subdir3 
          |-----subdir31 
          |  |-----a.jpg 
          | 
          |-----subdir32 
            |-----b.jpg 

Ich brauche here.bat zu verwenden a.jpg und b.jpg zu verarbeiten. Also schreibe ich eine Fledermaus Datei mit dem Namen mybat.bat wie folgt:

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 

For /d %%A in (.\subdir\*) Do (
    Set "Files=" 
    For /F "delims=" %%B in ('dir /S /B "%%~fA\*.jpg"') Do Set Files=!Files! "%%~fB" 
    If defined Files echo call here.bat !Files! 
) 

pause 

Als ich mybat.bat ausführen, bekomme ich das Ergebnis wie folgt:

call here.bat "C:\Users\me\mydir\subdir\subdir2\subdir3\subdire31\a.jpg" "C:\Users\me\mydir\subdir\subdir2\subdir3\sudbir32\b.jpg" 

Aber das ist nicht das, was ich brauche. Ich muss jpg Dateien verarbeiten, die im selben Verzeichnis mit here.bat sind, wenn sie nicht im selben Verzeichnis sind, sollten sie separat verarbeitet werden. wie unten Was bedeutet, dass ich das Ergebnis benötigen:

call here.bat "C:\Users\me\mydir\subdir\subdir2\subdir3\subdire31\a.jpg" 
call here.bat "C:\Users\me\mydir\subdir\subdir2\subdir3\sudbir32\b.jpg" 
+0

Warum ist die Antwort in [Ihre andere ähnliche Frage] (https://stackoverflow.com/questions/44402963/windows-bat-loop-files-in-directories) nicht ausreichend? –

+0

@JeffZeitlin Meiner Meinung nach liegt das daran, dass die Subpfade in der anderen Frage völlig verschieden sind: 'subdir1 ...' und 'subdir2 ...'. Aber hier sind die Teilwege sehr ähnlich. Nun, ich bin mir nicht sicher ... Aber du kannst meine Antwort in dieser Frage versuchen. Ich glaube, dass Sie das gleiche Problem bekommen werden. – Yves

+0

Aber die gleichen Techniken sollten funktionieren, unterscheiden sich nur in den Details. Möglicherweise müssen Sie sich etwas Zeit nehmen, um mehr über die Programmierung im Allgemeinen und die Stapelprogrammierung zu erfahren, damit Sie diese Probleme selbst lösen können, anstatt wiederholt Fragen zu stellen, die wirklich nur geringfügige Unterschiede in den Bedingungen haben. –

Antwort

0

Ihre wechselnden Anforderungen machen es schwierig, eine Lösung in dem ersten Lauf zur Verfügung zu stellen. Diese Version sollte tun:

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 
for /R ".\subdir" %%A in (.) do (
    Set "Files=" 
    If Exist "%%~fA\*.jpg" For /F "delims=" %%B in (
     'dir /B "%%~fA\*.jpg"') Do Set Files=!Files! "%%~fB" 
    If defined Files echo call here.bat !Files! 
) 
pause 
Verwandte Themen