Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск файла, перемещение, удаление исходной папки cmd\bat

Ответить
Настройки темы
CMD/BAT - [решено] Поиск файла, перемещение, удаление исходной папки cmd\bat

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Встала задача написать скрипт для сортировки некоторого количества файлов
Помогите разобраться в процессе
К примеру:


1. Найти файл search1.txt в D:\Temp\ включая подкоталоги
2. Если найден, то создать папку E:\find1 и переместить в неё сам файл
3. Найти файл search2.txt в D:\Temp\ включая подкоталоги
4. Если найден, то создать папку E:\find2 и переместить в неё сам файл удалив папку исходного файла со всем ее содержимым.

Отправлено: 15:25, 08-04-2013

 

Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


Код: Выделить весь код
@echo off

for /f "tokens=*" %%i in (' dir /b /s /a "D:\Temp\search*.txt" ') do (

    if "%%~nxi"=="search1.txt" (md "E:\find1" && move %%i "E:\find1")
    if "%%~nxi"=="search2.txt" (md "E:\find2" && move %%i "E:\find2" && rd /s /q "%%~dpi")

)
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:57, 08-04-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Foreigner, Спасибо, работает, правда не во всех случаях

1. - не дружит с пробелами, ни в какую, если в имени файла или каталога есть пробел, то выдает
"ошибка синтаксиса"

Решилось скобками на переменных

@echo off

for /f "tokens=*" %%i in (' dir /b /s /a "D:\Temp\search*.txt" ') do (

if "%%~nxi"=="search1.txt" (md "E:\find1" && move "%%i" "E:\find1")
if "%%~nxi"=="search2.txt" (md "E:\find2" && move "%%i" "E:\find2" && rd /s /q "%%~dpi")

)

2. Если папка в которую нужно перемещать (прим E:\find1) существует, то на этом скрипт затыкается :-(

Отправлено: 17:26, 08-04-2013 | #3


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


Вроде поправил
Код: Выделить весь код
@echo off

for /f "tokens=*" %%i in (' dir /b /s /a "D:\Temp\search*.txt" ') do (

    if "%%~nxi"=="search1.txt" (
        
        2>nul md "E:\find1"
        move "%%i" "E:\find1"
   
    )

    if "%%~nxi"=="search2.txt" (

        2>nul md "E:\find2"
        move "%%i" "E:\find2"
        rd /s /q "%%~dpi"
))
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:34, 08-04-2013 | #4


Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Последние грабли

search2.txt и search3.txt лежат в одной папке,
вне зависимости от того найден ли search3.txt папка в которой лежат оба файл удаляется, как сделать что бы она оставалась живой если найден search2.txt, но не найден search3.txt?


Цитата:
@echo off

for /f "tokens=*" %%i in (' dir /b /s /a "D:\Temp\search*.txt" ') do (

if "%%~nxi"=="search1.txt" (

2>nul md "E:\find1"
2>nul md "E:\find1\dub1"
move "%%i" "E:\find1\dub1"

)


if "%%~nxi"=="search2.txt" (

2>nul md "E:\find1"
2>nul md "E:\find1\dub1"
2>nul md "E:\find1\dub1\dub2"
move "%%i" "E:\find1\dub1\dub2"


)

if "%%~nxi"=="search3.txt" (

2>nul md "E:\find1"
2>nul md "E:\find1\dub1"
2>nul md "E:\find1\dub1\dub2"
move "%%i" "E:\find1\dub1\dub2"
rd /s /q "%%~dpi"

))

Отправлено: 17:59, 08-04-2013 | #5


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


Цитата KitsuNeko:
как сделать что бы она оставалась живой если найден search2.txt, но не найден search3.txt? »
Ваш вариант меня запутал, по этому исходя из моего
Код: Выделить весь код
...
if "%%~nxi"=="search2.txt" (

    2>nul md "E:\find1\dub1\dub2"
    move "%%i" "E:\find1\dub1\dub2"
    if exist "%%~dpi\search3.txt" rd /s /q "%%~dpi"

)
...
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:21, 08-04-2013 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск файла, перемещение, удаление исходной папки cmd\bat

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] CMD Перемещение файлов. Условие поиск слова в файле xsanekk Скриптовые языки администрирования Windows 2 12-09-2012 16:49
CMD/BAT - Поиск по маске - удаление, перемещение, запуск iramp Скриптовые языки администрирования Windows 1 22-12-2011 18:55
Как свернуть выполнение bat(cmd) файла? Centrinar AutoIt 5 29-09-2011 15:16
Доступ - [решено] Ищу программу запрещающую удаление и перемещение папки, но не её содержимого. Houre Microsoft Windows 2000/XP 16 28-02-2011 02:26
CMD/BAT - [решено] сохранить окно CMD после выполнения bat файла WChek Скриптовые языки администрирования Windows 6 17-03-2008 11:03




 
Переход