Компьютерный форум 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=219417)

yaoleg2 31-10-2011 23:38 1786120

Выбор файлов из списка с последующим копированием и переносом в другую папку
 
В папке есть произвольное количество файлов (от 1 до 25), тип файлов – txt, названия файлов длиною 8 английских букв и цифр, первые 2 символа в названии файлов всегда одинаковые и состоят из цифр 12 (маска 12??????.txt).
Как сделать чтобы можно было выбрать файл из списка 12AS0G04.TXT, 12AS0C06.TXT, 128U0G02.TXT
Код:

Dir /A-D /B /S C:\1\12??????.txt
и скопировать с тем же именем файла в другую папку, а потом еще и перенести с переименованием первоначальный файл (например: с 128U0G02.TXT на 1.TXT)?
Суть в том, чтобы обрабатывать файлы по очереди: 1.Скопировать, 2.Перенести+переименовать, 3. Дальнейшая обработка файла пользователем.

Iska 01-11-2011 01:43 1786188

yaoleg2, у Вас что-то «смешались в кучу кони, люди». Не очень понятно, что конкретно Вам нужно, в чём у Вас, собственно, проблема.

yaoleg2 01-11-2011 02:23 1786199

Надо скопировать файл в другую папку название которого уникально кроме первых двух символов. Для этого и нужно посмотреть какие файлы есть в папке, а потом копировать/переносить по очереди, а не все одновременно как при обычной обработке скрипта.

yaoleg2 03-11-2011 10:36 1787877

А как скриптом скопировать всего лишь один файл по маске если обычно он копирует все сразу?

Iska 03-11-2011 17:34 1788146

yaoleg2, приведите пример.

yaoleg2 03-11-2011 21:53 1788281

Код:

copy C:\Prog\inp\12??????.txt E:\Prog\IN\
ren E:\Prog\IN\12??????.txt 1.txt
move C:\Prog\inp\12??????.txt E:\Prog\INS\
pause


Iska 03-11-2011 22:11 1788292

yaoleg2, ничего не понятно. «move» нечего будет перемещать.

Я имел в виду иное: «Имеются, например, такие-то и такие-то файлы (перечислили их), я хочу получить то-то и то-то (написали), использую для этого такой-то код (привели код), получаю то-то и то-то (написали, что получили в итоге)». Тогда станет понятно.

yaoleg2 03-11-2011 23:45 1788317

1. Файлы: 12AS0G04.TXT, 12AS0C06.TXT, 128U0G02.TXT и т.п.

2. Надо чтобы эти файлы скрипт копировал/переносил по одному! Файл 12AS0G04.TXT скопировал в папку E:\Prog\IN\ при этом сменил название на 1.txt, а после копирования файла 12AS0G04.TXT перенес его с папки C:\Prog\inp\12??????.txt в папку E:\Prog\INS\

3. Этот код нормально работает когда в папке C:\Prog\inp\ один файл 12??????.txt и не работает когда их 2 и более:
Код:

copy C:\Prog\inp\12??????.txt E:\Prog\IN\
ren E:\Prog\IN\12??????.txt 1.txt
move C:\Prog\inp\12??????.txt E:\Prog\INS\

4. В тоге получаю в папке E:\Prog\IN\ файл 1.txt, а в папке E:\Prog\INS\ файл 12AS0G04.TXT которые отличаются друг от друга лишь названием.
Скрипт должен для обработки выбрать только один файл если в папке будет несколько файлов которые будут соответствовать маске файла!

Anonymоus 04-11-2011 00:50 1788336

yaoleg2, вот этот код делает то, что вам нужно.
Проследите, чтобы поддиректории (in, ins, inp) уже были созданы, я не делал проверку на их существование.

Код:

@Echo Off
Set Source=C:\Prog
Set Destination=E:\Prog

For /F "tokens=*" %%F In ('Dir %Source%\INP\12??????.TXT /B') Do (
Copy %Source%\INP\%%F %Destination%\IN\
Ren %Destination%\IN\%%F 1.txt
Move %Source%\INP\%%F %Destination%\INS\
Exit
)


yaoleg2 04-11-2011 01:19 1788339

Все очень хорошо, спасибо!

Но нужно чтобы после второго запуска скрипта в папке %Destination%\IN\ был лишь следующий файл 12??????.TXT переименованный в 1.txt, а не 1.txt, 12AS0G04.TXT, 12AS0C06.TXT, 128U0G02.TXT и т.п.

Лучше всего чтобы скрипт проверял наличие файла 1.txt в папке %Destination%\IN\ и если файл есть прекращал работу скрипта сразу!

Anonymоus 04-11-2011 01:28 1788342

Как вы и просили, поправил.
Код:

@Echo Off
Set Source=C:\Prog
Set Destination=E:\Prog

If Exist %Destination%\IN\1.txt (Exit 1)
For /F "tokens=*" %%F In ('Dir %Source%\INP\12??????.TXT /B') Do (
Copy %Source%\INP\%%F %Destination%\IN\
Ren %Destination%\IN\%%F 1.txt
Move %Source%\INP\%%F %Destination%\INS\
Exit
)



Время: 16:59.

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