Показать полную графическую версию : [решено] Поиск файла, перемещение, удаление исходной папки cmd\bat
KitsuNeko
08-04-2013, 15:25
Встала задача написать скрипт для сортировки некоторого количества файлов
Помогите разобраться в процессе
К примеру:
1. Найти файл search1.txt в D:\Temp\ включая подкоталоги
2. Если найден, то создать папку E:\find1 и переместить в неё сам файл
3. Найти файл search2.txt в D:\Temp\ включая подкоталоги
4. Если найден, то создать папку E:\find2 и переместить в неё сам файл удалив папку исходного файла со всем ее содержимым.
Foreigner
08-04-2013, 16:57
@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")
)
KitsuNeko
08-04-2013, 17:26
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) существует, то на этом скрипт затыкается :-(
Foreigner
08-04-2013, 17:34
Вроде поправил
@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"
))
KitsuNeko
08-04-2013, 17:59
Последние грабли
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"
))
Foreigner
08-04-2013, 18:21
как сделать что бы она оставалась живой если найден 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"
)
...
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.