Войти

Показать полную графическую версию : [решено] Перемещение файлов из списков по разным папкам


blither
12-04-2016, 13:11
Есть хороший кот, умеет копировать файл в папку с названием самого файла

@echo off
rem Папка источник
set "in=folder"
rem Список файлов
set "list=1.txt"
rem Каталог назначения
set "out=new folder"
for /f "usebackq delims=" %%i in ("%list%") do (
for %%j in (%%~i) do (
for /f "delims=" %%a in ('dir /a-d /b /s "%in%"') do (
if %%~j==%%~nxa if not exist "%out%\%%~na" md "%out%\%%~na" & COPY "%%~a" "%out%\%%~na"
)))
pause


Помогите научить кота делать больше))
1. Изменить копирование на перемещение или удаление скопированного файла из источника
2. Больше списков и каждому своя папка



Папка источник
set "in=folder"

Списоки файлов
set "list1=1.txt"
set "list2=2.txt"
set "list3=3.txt"
~ list100=100.txt

Каталог назначения
set "out1=1 new folder"
set "out2=2 new folder"
set "out3=3 new folder"
~ "out100=100 new folder"


Принципиально можно обойтись и одним списком, особо важно именно перемещение файла или его удаление после копирования.

Iska
12-04-2016, 13:16
перемещение файла »
Замените «copy» на «move».

или его удаление после копирования. »
Добавьте сразу после команды с «copy», в той же строке:
&& del /f /q "%%~a"

blither
12-04-2016, 13:27
Замените «copy» на «move».
c move вообще не работает
Добавьте сразу после команды с «copy», в той же строке:
Работает!!! Спасибо!!!!!!!

Можно организовать еще несколько списков и для каждого списка своя папка назначения?

Iska
12-04-2016, 13:43
c move вообще не работает »
Попробуйте дополнительно в команде убрать «%%~na» совокупно с заменой «copy» на «move».

Можно организовать еще несколько списков и для каждого списка своя папка назначения? »
Не вижу ни малейшего смысла окромя усложнения кода.

Замените прямое указание:
set "in=folder"
set "list=1.txt"
set "out=new folder"
на получение параметров:
set "in=%~1"
set "list=%~2"
set "out=%~3"
(разумеется, правильным будет и добавить проверку полученных аргументов).

Создайте «головной» пакетный файл в виде:
@echo off

call "MyMoving.cmd" "folder" "1.txt" "1 new folder"
call "MyMoving.cmd" "folder" "2.txt" "2 new folder"
call "MyMoving.cmd" "folder" "3.txt" "3 new folder"

и пользуйте.




© OSzone.net 2001-2012