Показать полную графическую версию : [решено] Выбор файлов из списка с последующим копированием и переносом в другую папку
В папке есть произвольное количество файлов (от 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. Дальнейшая обработка файла пользователем.
yaoleg2, у Вас что-то «смешались в кучу кони, люди». Не очень понятно, что конкретно Вам нужно, в чём у Вас, собственно, проблема.
Надо скопировать файл в другую папку название которого уникально кроме первых двух символов. Для этого и нужно посмотреть какие файлы есть в папке, а потом копировать/переносить по очереди, а не все одновременно как при обычной обработке скрипта.
А как скриптом скопировать всего лишь один файл по маске если обычно он копирует все сразу?
yaoleg2, приведите пример.
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
yaoleg2, ничего не понятно. «move» нечего будет перемещать.
Я имел в виду иное: «Имеются, например, такие-то и такие-то файлы (перечислили их), я хочу получить то-то и то-то (написали), использую для этого такой-то код (привели код), получаю то-то и то-то (написали, что получили в итоге)». Тогда станет понятно.
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
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
)
Все очень хорошо, спасибо!
Но нужно чтобы после второго запуска скрипта в папке %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
Как вы и просили, поправил.
@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
)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.