Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2010, 18:17   #1
DS75
Пользователь
 
Аватар для DS75
 
Регистрация: 20.04.2009
Сообщений: 50
По умолчанию

Доброго времени суток!
Помогите пожалуйста кто разбирается в CMD\BAT.
Второй день не могу решить такую казалось бы простую проблему...
Код должен быть примерно таким, но он не работает...
Код:
copy *.exe C:\Manifest\123.exe
В общем задача такая:
в bat-скрипте нужно скопировать из текущей директории
файл в формате
НАЗВАНИЕ файла - цифра от 0 до 65356 (заранее неизвестно)
РАСШИРЕНИЕМ - *.ехе
в файл - 123.exe

Похоже единственное решение:
Код:
for %%f in (*.exe) do copy %%f C:\Manifest\123.exe
Но вопрос о наличии более изящного решения
ИМХО остается

Последний раз редактировалось Stilet; 02.03.2010 в 13:07.
DS75 вне форума Ответить с цитированием
Старый 02.03.2010, 10:40   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код должен быть примерно таким, но он не работает...
Код:
copy *.exe C:\Manifest\123.exe
не подтверждаю!
Windows XP SP2
код работает как часы!! (ну, если не считать, что при наличии нескольких файлов *.exe - перепишется самый последний по дате создания и не учитывать, что копируется любой EXE файл, а не только тот, чьё имя состоит только из "цифра от 0 до 65356" (да, ещё, цифра не может быть "до 65356"!!! это число может быть "до 65356"))
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.03.2010, 11:59   #3
DS75
Пользователь
 
Аватар для DS75
 
Регистрация: 20.04.2009
Сообщений: 50
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
не подтверждаю!
Windows XP SP2
код работает как часы!! [/COLOR][/I])
У меня Windows XP SP3 с обновлениями по январь. Код не работает...
Цитата:
(ну, если не считать, что при наличии нескольких файлов *.exe - перепишется самый последний по дате создания и не учитывать, что копируется любой EXE файл, а не только тот, чьё имя состоит только из "цифра от 0 до 65356" [I][COLOR="DimGray"](да, ещё, цифра не может быть "до 65356"!!! это число может быть "до 65356")
Это я так написал т.к. не знаю возможности создать маску только для 0-56356.exe файла.
Если знаете подскажите плизз!
Так как конструкция
Код:
for %%f in (*.exe) do copy %%f C:\Manifest\123.exe
также не дает гарантии что скопируется именно этот файл
Еще это файл размером не более 22 Кб.
DS75 вне форума Ответить с цитированием
Старый 02.03.2010, 12:47   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
У меня Windows XP SP3 с обновлениями по январь. Код не работает...
позвольте мне проявить настойчивость — как проверяете?
где лежит батник? рядом с нужным exe-шником? ошибка выдаётся? попробуйте после этой строчки (copy...) дописать pause (это приостановит выполнение командного файла) и позволит почитать выдаваемые батником сообщения (кстати, неплохо бы в начале батника дописать ECHO ON)
приведите содержимое батника ПОЛНОСТЬЮ!
ну я не верю, что такой просто код может не работать!

Цитата:
Это я так написал т.к. не знаю возможности создать маску только для 0-56356.exe файла.
Если знаете подскажите плизз!
таких exe-шников в каталоге может быть несколько?
если да - какой брать для копирования?
Вам нужно решить задачу строго на командных файлах или можно использовать дополнительные программы? (написать такую на Delphi - минут 5 займёт!)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.03.2010, 15:33   #5
DS75
Пользователь
 
Аватар для DS75
 
Регистрация: 20.04.2009
Сообщений: 50
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
позвольте мне проявить настойчивость — как проверяете?
где лежит батник? рядом с нужным exe-шником? ошибка выдаётся? попробуйте после этой строчки (copy...) дописать pause (это приостановит выполнение командного файла) и позволит почитать выдаваемые батником сообщения (кстати, неплохо бы в начале батника дописать ECHO ON)
приведите содержимое батника ПОЛНОСТЬЮ!
ну я не верю, что такой просто код может не работать!
Код 1.bat
Код:
@Echo on

chcp 866
rem создаем название папки
set a1111=%random%


for %%A in (H) do copy *.exe %%A:\123\%a1111%.exe
pause
Вывод на экране
Код:
C:\Manifest>chcp 866
Текущая кодовая страница: 866

C:\Manifest>rem ёючфрхь эрчтрэшх яряъш

C:\Manifest>set a1111=9458

C:\Manifest>for %A in (H) do copy *.exe %A:\123\9458.exe

C:\Manifest>copy *.exe H:\123\9458.exe
24256.exe
Скопировано файлов:         1.

C:\Manifest>pause
Для продолжения нажмите любую клавишу . . .
И все бы хорошо только
Код:
freeCommander - Содержимое каталога:  H:\123 02.03.2010 18:25

Дата      Время    Атрибуты     Байты          Имя файла
---------- -------- ------   ----------------  --------

H:\123
02.03.2010 18:22:15 A-----                166  9458.exe
                          -------------------  
                                          166  1 Файлы

Краткий отчет H:\123
  Каталогов   =                  1
  Файлов      =                  1
  Байт        =                166
Код:
freeCommander - Содержимое каталога:  C:\Manifest 02.03.2010 18:25

Дата      Время    Атрибуты     Байты          Имя файла
---------- -------- ------   ----------------  --------

C:\Manifest
02.03.2010 18:13:21 ----H-                130  1.bat
02.03.2010 18:13:13 A-----              1*342  24256.bat
20.01.2008 21:18:16 ------             19*968  24256.exe
02.03.2010 18:25:01 A-----                  0  FileList.txt
27.02.2010 18:07:06 -D----                     gsar121
26.02.2010 22:02:40 -D----                     nnBackup
28.02.2010 17:07:45 A-----                  0  Новый текстовый файл.xxx
                          -------------------  
                                       21*440  5 Файлы
То есть скопировалось только 166 байт. А должно было 24Кб.
Цитата:
таких exe-шников в каталоге может быть несколько?
если да - какой брать для копирования?
Вам нужно решить задачу строго на командных файлах или можно использовать дополнительные программы? (написать такую на Delphi - минут 5 займёт!)
С копировать нужно только тот исполняемый файл в название которого состоит из числа от 0 до 65356. Хотелось бы ограничиться только батником...
DS75 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в скрипте mkth PHP 0 21.02.2010 01:45
Скрипт в скрипте bagfinder PHP 25 28.11.2009 16:23
Цикл в скрипте SoFuWa Microsoft Office Excel 5 21.03.2009 20:29
Помощь в скрипте Eretic JavaScript, Ajax 5 02.12.2008 14:48
Ошибка в скрипте Qsajeal PHP 11 03.06.2008 12:22