2017-02-07 9 views
-1

Я прочитал пару вопросов с подобной темой, но ни один из них не охватывает этот сценарий.Batch Script: переместить файлы в папку на основе имени исходной папки

Я ищу, чтобы использовать пакетный файл, который будет проверять, является ли каталог пустым, и если он содержит файлы, переместите их в соответствующую папку. Отсюда он будет проверять второй каталог и делать то же самое, но в другой соответствующей папке.

Для примера:

Проверяет, является ли C: \ One содержит файлы, если это действительно переместить все содержимое в C: \ Получит \ One

На данный момент (или C: \ Один пусто), он переместится и проверит, содержит ли C: \ Two файлы. Если это произойдет, он переместит все файлы в C: \ Receive \ Two и остановит сценарий. Если C: \ Two пуст, скрипт также остановится здесь.

В настоящее время я использую два сценария, поэтому было просто интересно, был ли способ сделать это более аккуратным с одним скриптом.

@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

Мы делаем не писать код для вас. *** Покажите свою собственную работу ***, затем объясните, с какими проблемами столкнулись. – abelenky

+0

@TomBagley 'goto: eof' кажется совершенно бесполезным в этом положении. Пожалуйста, проверьте код (возможно, пострадали от редактирования) – Stephan

ответ

0

Он смотрит на меня, как простой шаг, в две строки:

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

Или, если вам действительно нужно сделать это в пакетном-цикле:

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

Только простой шаг, когда вы знаете, как это сделать! Спасибо, это действительно помогло мне понять. – TomBagley