2017-02-07 4 views
-1

Ich habe ein paar Fragen mit einem ähnlichen Thema gelesen, aber keines scheint dieses Szenario zu behandeln.Batch-Skript: Verschieben von Dateien in einen Ordner basierend auf dem Namen des Quellordners

Ich bin auf der Suche nach einer Batch-Datei, die prüfen wird, ob ein Verzeichnis leer ist und wenn es Dateien enthält, verschieben Sie sie in einen entsprechenden Ordner. Von hier aus wird es dann ein zweites Verzeichnis prüfen und dasselbe tun, aber zu einem anderen entsprechenden Ordner.

Beispiel:

Prüft, ob C: \ One-Dateien enthält, wenn es um den Inhalt C bewegt: \ Receive \ One

An diesem Punkt (oder, wenn C: \ One ist leer) Es wird verschoben und überprüft, ob C: \ Two Dateien enthält. Wenn dies der Fall ist, werden alle Dateien nach C: \ Receive \ Two verschoben und das Skript gestoppt. Wenn C: \ Zwei leer ist, wird das Skript auch hier anhalten.

Gegenwärtig verwende ich zwei Skripte, also war nur daran interessiert, ob es einen Weg gab, es mit einem Skript aufgeräumter zu machen.

@echo off 
for /F %%i in ('dir /b "c:\one\*.*"') do ( 
    move C:\One\* C:\Receive\One 
    goto :EOF 
) 
echo No Files To Move 
+0

Wir tun schreibe keinen Code für dich. *** Zeigen Sie Ihre eigene Arbeit ***, und erklären Sie dann, auf welche Probleme Sie gestoßen sind. – abelenky

+0

@TomBagley 'goto: eof' scheint in dieser Position ziemlich nutzlos zu sein. Bitte überprüfen Sie den Code (möglicherweise durch die Bearbeitung gelitten haben) – Stephan

Antwort

0

Es sieht für mich wie eine einfache Bewegung, in zwei Linien:

move C:\One\*.* C:\Receive\One\ 
move C:\Two\*.* C:\Receive\Two\ 

Oder, wenn Sie es wirklich in einer Batch-Schleife tun müssen, um:

for %%a in (One Two) do (
    move C:\%%a\*.* C:\Receive\%%a\ 
    if ERRORLEVEL 1 echo No files to move from %%a 
) 
+0

Nur ein einfacher Zug, wenn Sie wissen, wie! Danke, das hat mir wirklich geholfen. – TomBagley

Verwandte Themen