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

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

shadowbat 20-05-2010 22:40 1417694

как скопировать файлы 1,2,3 в папки x,y,z соответственно
 
имеются файлы 0001, 0002, 0003 ..... 0300
и папки x1 x2 x3 ...x300

как скопировать:
0001 в x1
0002 в x2
0300 в x300

(названия у файлов именно 0001, 0002, 0003 а у папок названия все разные. нужно первый файл в первую по счету папку, второй файл во вторую по счету и т.д.)

amel27 21-05-2010 08:50 1417899

так как способ подачи списков не оговорен, пусть они будут в файлах files.txt и dirs.txt:
Код:

@Echo Off

Set $F=files.txt
Set $D=dirs.txt

For /F "Tokens=1* Delims=[]" %%i In ('^<"%$F%" Find /V /N ""') Do (
For /F "Tokens=1* Delims=[]" %%a In ('^<"%$D%" Find /V /N ""') Do (
If "%%i"=="%%a" Echo COPY "%%~j" "%%~b"))

P.S. предполагается, что батник в каталоге с файлами, т.к. не оговорено иное

shadowbat 21-05-2010 09:37 1417933

хм... батник пишет что скопировал но не копирует. папки пустые.


вот список части папок


нужно скинуть
1.txt в 1 Обучающий видеокурс по Microsoft Office 2003
2.txt в 2 Обучающий видеокурс по Microsoft Office 2007
и т.д.

файлы txt находятся в той же папке, что и сами папки (как на тестовом примере на первой картинке)

amel27 21-05-2010 11:53 1418039

Цитата:

Цитата shadowbat
батник пишет что скопировал но не копирует »

уберите "Echo", осталось от проверки =)

shadowbat 21-05-2010 12:55 1418091

Цитата:

Цитата amel27
уберите "Echo", осталось от проверки »

работает!

в папки с двумя и более словами в названии копирует
в папки с цифрами копирует
в папки с англ.буквами копирует

а вот в папки с русскими буквами не копирует, а создает вместо этого файл с названием папки. это лечится?

amel27 21-05-2010 13:00 1418098

shadowbat, списки папок/файлов должны быть в родной для CMD DOS-кодировке (866)

shadowbat 21-05-2010 13:07 1418102

amel27, я бы не понял это сообщение :) но пока я ждал ответ полез в гугл и нашел эту ветку на нашем форуме
http://forum.oszone.net/thread-169373.html

решение: В начале добавляем chcp 1251, в конце chcp 866
либо
решение: редактировать .bat в редакторе типа bred.


теперь все заработало!!
amel27, благодарю!

ИТОГОВОЕ РЕШЕНИЕ:
Код:

chcp 1251
@Echo Off

Set $F=files.txt
Set $D=dirs.txt

For /F "Tokens=1* Delims=[]" %%i In ('^<"%$F%" Find /V /N ""') Do (
For /F "Tokens=1* Delims=[]" %%a In ('^<"%$D%" Find /V /N ""') Do (
If "%%i"=="%%a" COPY "%%~j" "%%~b"))
chcp 866



Время: 06:39.

Время: 06:39.
© OSzone.net 2001-