2017-06-07 4 views
0

Ich arbeite an Windows. Ich habe viele jpg Dateien in Unterverzeichnissen eines Verzeichnisses. Ich weiß nicht genau die Architektur des Verzeichnisses, was bedeutet, dass ich nicht weiß, wie viele Ebenen die Unterverzeichnisse haben. Was ich tun muss, ist jpg Dateien nach ihren Pfaden zu verarbeiten. Hier ein Beispiel:
Windows bat: Loop-Dateien in Verzeichnissen

dir 
|---sub dir1 
|  |-----sub dir11 
|    |-----a.jpg 
|    |-----b.jpg 
|---sub dir2 
     |-----c.jpg 
     |-----d.jpg 

Also brauche ich Befehle auszuführen, wie unten:

process.bat C:\dir\sub dir1\sub dir11\a.jpg C:\dir\sub dir1\sub dir11\b.jpg 
process.bat C:\dir\sub dir2\c.jpg C:\dir\sub dir2\d.jpg 

Ich weiß nicht, wie eine solche bat-Datei zu schreiben, vor allem eine Fledermaus Verarbeitungspfade Leerzeichen enthält. Ich weiß nicht, ob Räume Probleme machen.

Ich habe wie unten versucht, aber es funktioniert nicht:

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 

For /d %%A in (C:\dir\*) Do (
    Set "Files=" 
    For /f %%B in ("%%~fA\*.jpg") Do Set Files=!Files! "%%~fB" 
    If defined Files echo process.bat %%~fA\*.jpg 
) 

pause 

Als ich das Skript ausführen, ich wie das folgende Ergebnis:

process.bat C:\dir\sub dir1\*.jpg 
process.bat C:\dir\sub dir2\*.jpg 

Es scheint, dass * wird als normales Zeichen betrachtet.

Antwort

1
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 

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

pause 
0
If defined Files echo process.bat !files! 

sollte das Problem lösen - aber ob process.bat werden zusammenarbeiten müssen noch bestimmt werden. Müsste Sie auflisten process.bat, falls erforderlich.

+0

Ich versuche nur Ihre Änderung. Es scheint zu funktionieren, außer dass die Leerzeichen in den Pfaden ein anderes Problem hervorrufen. Jetzt bekomme ich ein solches Ergebnis: 'process.bat C: \ dir \ unterprocess.bat C: \ dir \ sub' – Yves

+0

Ich entferne nur alle Leerzeichen in den Pfaden und es funktioniert immer noch nicht. Ich habe das: 'process.bat C: \ Verzeichnis \ Unterverzeichnis1 \ *. Jpg Prozess.bat C: \ Verzeichnis \ Unterverzeichnis2 \ *. Jpg' – Yves

+0

Problem gelöst. Ich stelle eine andere Antwort. – Yves

Verwandte Themen