Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Перемещение файлов из списков по разным папкам (http://forum.oszone.net/showthread.php?t=313768)

blither 12-04-2016 13:11 2625367

Перемещение файлов из списков по разным папкам
 
Есть хороший кот, умеет копировать файл в папку с названием самого файла

Код:

@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 2625369

Цитата:

Цитата blither
перемещение файла »

Замените «copy» на «move».

Цитата:

Цитата blither
или его удаление после копирования. »

Добавьте сразу после команды с «copy», в той же строке:
Код:

&& del /f /q "%%~a"

blither 12-04-2016 13:27 2625377

Цитата:

Цитата Iska
Замените «copy» на «move».

c move вообще не работает
Цитата:

Цитата Iska
Добавьте сразу после команды с «copy», в той же строке:

Работает!!! Спасибо!!!!!!!

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

Iska 12-04-2016 13:43 2625386

Цитата:

Цитата blither
c move вообще не работает »

Попробуйте дополнительно в команде убрать «%%~na» совокупно с заменой «copy» на «move».

Цитата:

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

Не вижу ни малейшего смысла окромя усложнения кода.

Замените прямое указание:
Код:

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"

и пользуйте.


Время: 16:34.

Время: 16:34.
© OSzone.net 2001-