![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Выбор файла из меню и копирование в нужную директорию. |
|
|
CMD/BAT - [решено] Выбор файла из меню и копирование в нужную директорию.
|
Новый участник Сообщения: 4 |
Доброго дня. Помогите незнатоку одолеть следующую задачу. Имеется папка (к примеру на флешке), в ней находится определенное, изменяющееся количество файлов с одним и тем же расширением. При запуске батника нужно, чтобы проверялась эта папка и выводилось меню с выбором файлов. После выбора одного из них, его необходимо скопировать в другую директорию (на жесткий диск).
|
|
Отправлено: 23:02, 14-02-2011 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Ну как, друзья мои, столько народу просмотрело, и никто не знает решения? Помогите плиз, шибко нужно!
|
Отправлено: 07:34, 16-02-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Вот чем мне смогли помочь:
@echo off if exist choose.txt del /f choose.txt setlocal enabledelayedexpansion set q=1 set papka1=F:\Backups set papka2=D:\New if not exist "%papka2%" md "%papka2%" for /f "tokens=*" %%i in ('dir /b "%papka1%"') do ( echo !q!.%%i echo !q!;%%i>> choose.txt set /a q+=1 ) echo. set /p vibor="Enter number of file: " echo. for /f "delims=; tokens=1,2" %%i in ('more choose.txt') do ( if "%vibor%"=="%%i" copy /y "%%j" "%papka2%" ) del /f choose.txt pause ![]() В чем подвох?.. |
Отправлено: 10:22, 16-02-2011 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать @echo off set SRC=C:\TEST set DST=E:\TEST if not exist "%SRC%" echo ERROR:"%SRC%" not exist!& pause>nul& exit if not exist "%DST%" md "%DST%"||(echo ERROR:"%DST%" not exist!& pause>nul& exit) :LOOP cls echo 1. List files from directory: "%SRC%" echo 2. Copy single file to directory: "%DST%" echo 3. Exit echo( set /p $F="Select menu item [1-3]:" set /a "$F=%$F%+0" if %$F% equ 1 call:SUB_1& echo(&pause if %$F% equ 2 call:SUB_2& echo(&pause if %$F% equ 3 Exit GoTo:LOOP :SUB_1 cls echo Files in "%SRC%": echo( pushd "%SRC%" dir/b/a-d *|findstr/n $|more popd GoTo:EOF :SUB_2 cls call:SUB_1 set /p $2="Enter file name or number in list:" set "$2=%$2:\=\\%" pushd "%SRC%" for /f "tokens=1* delims=:" %%a in ( 'dir/b/a-d *^|findstr/n $^|findstr/irc:"^%$2%:" /c:":%$2%$"' ) do copy/-y "%SRC%\%%b" "%DST%\" popd GoTo:EOF |
Отправлено: 12:05, 16-02-2011 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Так?!
@echo off setlocal enableextensions enabledelayedexpansion set sFolderSource=E:\Песочница\0033\01 set sFolderDest=E:\Песочница\0033\02 if not exist "%sFolderDest%" md "%sFolderDest%" dir /b /a:-d "%sFolderSource%" |find.exe /n /v "" echo. set /p iChoose="Enter file's number: " && set /a iChoose-=1 echo. for /f "delims=" %%i in ( 'dir /b /a:-d "%sFolderSource%"^|more +%iChoose%' ) do copy /y "%sFolderSource%\%%i" "%sFolderDest%\" & goto :LabelBreak :LabelBreak endlocal exit /b 0 дабы делать только один проход в цикле разбора? Как-то видел у Вас иной вариант, но забыл. |
|
Отправлено: 12:56, 16-02-2011 | #5 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 13:01, 16-02-2011 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата amel27:
|
|
Отправлено: 13:17, 16-02-2011 | #7 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Iska, а вот... еще применял такой прием:
Хоть это и не выход из цикла, но работает быстрей... До того как отработает DIR работа скрипта не продолжится, а GoTo - очень медленная команда, которая заключается в построчном просмотре всего батника, поиска нужной строки и установки нового значения счетчика команд... т.е. является операцией ввода-вывода, в то время как блок FOR предварительно прочитывается и кэшируется целиком (аналогично блоку кода в скобках). |
Отправлено: 16:12, 16-02-2011 | #8 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Позвольте свой вариант:
@Echo Off Set Source=C:\Source Set Output=C:\Output If Not Exist "%Source%" Echo Source directory not found! Exit.&Exit /B 1 If Not Exist "%Output%" Echo Output directory not found! Exit.&Exit /B 1 SetLocal For /F "Tokens=1* Delims=:" %%A In ('Dir /B /A-D "%Source%"^|FindStr /N .') Do Set _%%A=%%B&Echo %%A: %%B Echo. Set /P "Choice=Enter file's number: " If Defined _%Choice% (Call Copy /Y "%Source%\%%_%Choice%%%" "%Output%\") Else (Echo Wrong number! Exit.) EndLocal |
Отправлено: 18:33, 16-02-2011 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать amel27, спасибо, добавил в «Избранное».
|
Отправлено: 19:23, 16-02-2011 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Нахождение и выбор папки и её копирование | ikif | Скриптовые языки администрирования Windows | 1 | 30-12-2010 12:01 | |
Разное - Как изменить добавление надписи "Копия" при копировании файла в исходную директорию | Keleborn | Microsoft Windows 2000/XP | 3 | 08-07-2009 14:21 | |
[Вопрос] Svcpack и копирование файла с CD | ya158 | Автоматическая установка Windows 2000/XP/2003 | 8 | 11-11-2008 21:58 | |
Ошибка при копирование файла. | slavamlad | Microsoft Windows 2000/XP | 12 | 13-03-2005 03:49 | |
Двойное копирование файла с FTP. :( | BlackMonk | Хочу все знать | 3 | 13-02-2005 09:08 |
|