Товарисчи, что же, никто не знает как отсрочить команду переименования файла на момент закрытия всех процессов, использующих его?
» Командная строка, батники, сценарии (bat, cmd)
Цитата:
Код:
FOR /R "C:\new\" %%i IN (*.*) DO (
FOR /R "C:\old\" %%b IN (*.*) DO if "%%~nxb"=="%%~nxi" xcopy "%%~fi" "%%~fb" /Y /D
)
работает, но не всегда. Часть файлов в одну папку сортирует, а в остальные нет. Имена файлов везде одинакового вида - PIC_7296.JPG
Имя папки, в которую сортирует, никакими другими символами не отличается от других папок, также как и все содержит цифры, пробел и русские буквы.
Кто подскажет свой вариант или где ошибка?
может так, без батника ?
Код: xcopy /S /U /D /Y C:\new\*.* C:\old\
Что-то все мои задачи оказываются никому не по зубам... Может такой вариант будет полегче?...
Нужен батник , который будет:
1. (сначала) считывать собственное название (без .bat)
2. изымать папку с идентичным названием из C:\Archive\ и помещать ее рядом с собой
3. ...
4. ...
.
.
100. (по окончанию) Будет отправлять эту папку обратно в C:\Archive\
Спасибо.
Нужен батник , который будет:
1. (сначала) считывать собственное название (без .bat)
2. изымать папку с идентичным названием из C:\Archive\ и помещать ее рядом с собой
3. ...
4. ...
.
.
100. (по окончанию) Будет отправлять эту папку обратно в C:\Archive\
Спасибо.
timka85
Цитата:
А всё потому батенька, что вы выкладываете целиком всю свою задачу, и разбираться в ней ни у кого нет желания/времени. Советую впредь разбивать всю задачу на мелкие подзадачи и выкладывать их здесь, а затем самому собирать всю задачу из решённых подзадач
Цитата:
Пример:
Код:
@Echo Off
SetLocal
Set ArcDir=C:\Archive
Set DirName=%~n0
Xcopy %ArcDir%\%DirName% %~dp0\%DirName% /E /S /Y /I
Xcopy %~dp0\%DirName% %ArcDir%\%DirName% /E /S /Y /I
RD /S /Q %~dp0\%DirName%
Цитата:
Что-то все мои задачи оказываются никому не по зубам...
А всё потому батенька, что вы выкладываете целиком всю свою задачу, и разбираться в ней ни у кого нет желания/времени. Советую впредь разбивать всю задачу на мелкие подзадачи и выкладывать их здесь, а затем самому собирать всю задачу из решённых подзадач
Цитата:
Нужен батник
Пример:
Код:
@Echo Off
SetLocal
Set ArcDir=C:\Archive
Set DirName=%~n0
Xcopy %ArcDir%\%DirName% %~dp0\%DirName% /E /S /Y /I
Xcopy %~dp0\%DirName% %ArcDir%\%DirName% /E /S /Y /I
RD /S /Q %~dp0\%DirName%
Привет форумчанам.
Может кто подскажет, как написать в одну строку
(одной командой) COPY, с перезаписью файлов
Пример кода:
echo Y|COPY "sleep.exe" "%systemroot%\sleep.exe"
echo Y|COPY "Rar.exe" "%systemroot%\Rar.exe"
У мня что-то не получается, только в 2
команды получается.
Спс.
Может кто подскажет, как написать в одну строку
(одной командой) COPY, с перезаписью файлов
Пример кода:
echo Y|COPY "sleep.exe" "%systemroot%\sleep.exe"
echo Y|COPY "Rar.exe" "%systemroot%\Rar.exe"
У мня что-то не получается, только в 2
команды получается.
Спс.
Cosmogor
Ну так copy /?
Код:
copy /y "sleep.exe" "%systemroot%\sleep.exe"
Ну так copy /?
Код:
copy /y "sleep.exe" "%systemroot%\sleep.exe"
01MDM
Да нет же!
Надо чтоб получилось вот так:
Код:
echo Y|COPY "sleep.exe" "Rar.exe" "%systemroot%\sleep.exe" "%systemroot%\Rar.exe"
Что-то в этом роде. (но это неправильный код)
Одной командой COPY , можно было скопировать файлы
Спс.
Да нет же!
Надо чтоб получилось вот так:
Код:
echo Y|COPY "sleep.exe" "Rar.exe" "%systemroot%\sleep.exe" "%systemroot%\Rar.exe"
Что-то в этом роде. (но это неправильный код)
Одной командой COPY , можно было скопировать файлы
Спс.
Цитата:
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM
Да нет же!
Надо чтоб получилось вот так:
Код:
echo Y|COPY "sleep.exe" "Rar.exe" "%systemroot%\sleep.exe" "%systemroot%\Rar.exe"
Что-то в этом роде. (но это неправильный код)
Одной командой COPY , можно было скопировать файлы
Спс.
Код: echo Y | COPY "sleep.exe" ) %systemroot%\ & echo Y | COPY "Rar.exe" %systemroot%\
Здравствуйте уважаемые.
Есть задача, которую я не могу решить посредством *.bat - файла ввиду очень слабого знания предмета. Но чувствую что задача эта решаема именно этими средствами проще всего поскольку задача довольно нестандартная. В связи с этим прошу ногами не бить а указать где копать. На форуме уже перелопатил кучу страниц - воедино собрать не могу. Формулирую задачу:
Компьютер WIN_XP_PRO используется как сервер видеонаблюдения - записи камер сохраняются на диск в директорию _видеонаблюдение_ в виде
D:\_видеонаблюдение_\_день1_месяц_год\_камера1_\файл1
D:\_видеонаблюдение_\_день1_месяц_год\_камера1_\файл2
....
D:\_видеонаблюдение_\_день1_месяц_год\_камера2_\файл1
...
D:\_видеонаблюдение_\_день2_месяц_год\_камера1_\файл1
... и т.д.
файлы хранятся до заполнения всего диска, когда свободное место исчерпано - удаляются самые старые записи и на их место идет новая запись. Все это реализовано средствами программы видеонаблюдения.
Записи одной из камер надо хранить дольше чем то позволяет свободное место на диске. Необходимо все файлы из директории D:\_видеонаблюдение_\_день_месяц_год\_камераN_\
скопировать в shared_folder подключенную как сетевой диск в директорию \_день_месяц_год\_камераN_\ до момента удаления.
Комп_1 - Видеонаблюдения работает постоянно, а вот комп_2 - на котором находится shared_folder нет, поэтому возможно проще и правильней решать эту задачу с компа_2.
Неплохо было-бы установить проверку на наличие свободного места на диске с shared_folder компа_2 или ограничить количество папок в директории shared_folder, что в даном случае равнозначно дням сколько хранятся записи. А также проверку что фсе файлы из директории D:\_видеонаблюдение_\_день_месяц_год\_камераN_\ скопированы в shared_folder\_день_месяц_год\_камераN_\ так как обьем директории значительный и в силу какой-либо ошибки файлы могут скопироваться не все.
Есть задача, которую я не могу решить посредством *.bat - файла ввиду очень слабого знания предмета. Но чувствую что задача эта решаема именно этими средствами проще всего поскольку задача довольно нестандартная. В связи с этим прошу ногами не бить а указать где копать. На форуме уже перелопатил кучу страниц - воедино собрать не могу. Формулирую задачу:
Компьютер WIN_XP_PRO используется как сервер видеонаблюдения - записи камер сохраняются на диск в директорию _видеонаблюдение_ в виде
D:\_видеонаблюдение_\_день1_месяц_год\_камера1_\файл1
D:\_видеонаблюдение_\_день1_месяц_год\_камера1_\файл2
....
D:\_видеонаблюдение_\_день1_месяц_год\_камера2_\файл1
...
D:\_видеонаблюдение_\_день2_месяц_год\_камера1_\файл1
... и т.д.
файлы хранятся до заполнения всего диска, когда свободное место исчерпано - удаляются самые старые записи и на их место идет новая запись. Все это реализовано средствами программы видеонаблюдения.
Записи одной из камер надо хранить дольше чем то позволяет свободное место на диске. Необходимо все файлы из директории D:\_видеонаблюдение_\_день_месяц_год\_камераN_\
скопировать в shared_folder подключенную как сетевой диск в директорию \_день_месяц_год\_камераN_\ до момента удаления.
Комп_1 - Видеонаблюдения работает постоянно, а вот комп_2 - на котором находится shared_folder нет, поэтому возможно проще и правильней решать эту задачу с компа_2.
Неплохо было-бы установить проверку на наличие свободного места на диске с shared_folder компа_2 или ограничить количество папок в директории shared_folder, что в даном случае равнозначно дням сколько хранятся записи. А также проверку что фсе файлы из директории D:\_видеонаблюдение_\_день_месяц_год\_камераN_\ скопированы в shared_folder\_день_месяц_год\_камераN_\ так как обьем директории значительный и в силу какой-либо ошибки файлы могут скопироваться не все.
вопрос:
есть аутглюк. Туда (мне в мыло) автоматически приходят сообщения от программы. Сообщения стандартные, (тема идентична, текст идентичен за исключением части, какой специалист и кому сделал.)
Мне надо это добро пересылать данным специалистам. Можно конечно же, создать правиль для каждого - мол, если в тексте такое-то имя, то пересылать по такому-то адресу.
Но спецов много, соответственно, правил будет тоже.
- нельзя ли более изящное решение придумать? Как-то скриптом задать выбор имени, и его выбирать из адресной книжки, чтоб отсылать туда.
есть аутглюк. Туда (мне в мыло) автоматически приходят сообщения от программы. Сообщения стандартные, (тема идентична, текст идентичен за исключением части, какой специалист и кому сделал.)
Мне надо это добро пересылать данным специалистам. Можно конечно же, создать правиль для каждого - мол, если в тексте такое-то имя, то пересылать по такому-то адресу.
Но спецов много, соответственно, правил будет тоже.
- нельзя ли более изящное решение придумать? Как-то скриптом задать выбор имени, и его выбирать из адресной книжки, чтоб отсылать туда.
Цитата:
Неплохо было-бы установить проверку на наличие свободного места на диске
в WinXP есть родная утилитка freedisk.exe, очень удобная для пакетной работы.
а в остальном что именно не получается ?
или нужен готовый батник ?
Maza_Faka
Благодарю! Батник делает свое дело!
А теперь другая подзадача - более сложная Ее я уже пытался объяснить тут, поэтому сформулирую подругому. Есть файл(Commander.exe), ранее запущенный с батника. Есть другой процесс (неизвестный), который НЕ зависит от первого процесса, но пользуется им, и поэтому блокирует все попытки изменить его имя. Да, ситуация типичная, но нужно придумать батник, который постарается переименовать первый файл по следующему принципу:
1. Определение использующего его процесса
2. Ожидание завершения этого процесса
3. И наконец - переименование.
Ответ на этот вопрос избавит беня от других возможных подзадач. Благодарю.
Благодарю! Батник делает свое дело!
А теперь другая подзадача - более сложная Ее я уже пытался объяснить тут, поэтому сформулирую подругому. Есть файл(Commander.exe), ранее запущенный с батника. Есть другой процесс (неизвестный), который НЕ зависит от первого процесса, но пользуется им, и поэтому блокирует все попытки изменить его имя. Да, ситуация типичная, но нужно придумать батник, который постарается переименовать первый файл по следующему принципу:
1. Определение использующего его процесса
2. Ожидание завершения этого процесса
3. И наконец - переименование.
Ответ на этот вопрос избавит беня от других возможных подзадач. Благодарю.
Есть задача: удалить каталог, известно его размещение (например c:\temp\), а из имени первые три буквы, следующие три буквы - произвольные цифры (пример: qqq1, qqq32, qqq482)
Надо удалить этот каталог со всем содержимым.
"copy" работает с символами "*" и "?", а вот "rd" не воспринимает. Как побороть данное ограничение?
Надо удалить этот каталог со всем содержимым.
"copy" работает с символами "*" и "?", а вот "rd" не воспринимает. Как побороть данное ограничение?
Fannat
Попробуй так:
Код:
@echo off
for /d %%a in (c:\temp\qqq*) do rd /s /q "%%a"
Попробуй так:
Код:
@echo off
for /d %%a in (c:\temp\qqq*) do rd /s /q "%%a"
timka85
Цитата:
А, если сделать проще:
Код:
@Echo Off
:_RenProc
Ping -n 3 localhost>Nul
Ren Commander.exe MyProg.exe>Nul || GoTo :_RenProc
::Здесь ваш код
Цитата:
1. Определение использующего его процесса
2. Ожидание завершения этого процесса
3. И наконец - переименование.
А, если сделать проще:
Код:
@Echo Off
:_RenProc
Ping -n 3 localhost>Nul
Ren Commander.exe MyProg.exe>Nul || GoTo :_RenProc
::Здесь ваш код
Elroir
Работает как надо!
Работает как надо!
Maza_Faka
я хотел спросить об этом, но подумал, что это лишняя нагрузка на проц. Все равно спасибо за вариант.
Добавлено:
ВСЕМ
Уважаемая публика, кто знает, возможно ли средствами БАТника занести необходимое кол-во байтов в файл и потом обратно их удалить оттуда? Не исключаю, что для этого понадобятся особые утилиты, но все же, желательно, чтобы всем процессом руководил БАТник. Так возможно ли такое в теории?
я хотел спросить об этом, но подумал, что это лишняя нагрузка на проц. Все равно спасибо за вариант.
Добавлено:
ВСЕМ
Уважаемая публика, кто знает, возможно ли средствами БАТника занести необходимое кол-во байтов в файл и потом обратно их удалить оттуда? Не исключаю, что для этого понадобятся особые утилиты, но все же, желательно, чтобы всем процессом руководил БАТник. Так возможно ли такое в теории?
Привет всем.
Камрады, есть такая полезная прикладная задача. Как известно, существует база "плохих" ip, которых можно смело банить в utorrent и других p2p. дык вот эта база пополняется.
Создал я такой вот батничек, который через scheduler запускал раз в неделю, что обновляло эту самую базу:
@echo off
if exist ipfilter.dat copy ipfilter.dat ipfilter.bak > nul
if exist ipfilter.dat del ipfilter.dat
wget.exe -r --tries=3 http://emulepawcio.sourceforge.net/nieuwe_site/Ipfilter_fakes/ipfilter.dat -O ipfilter.dat
move /Y ipfilter.dat "%userprofile%\Application Data\uTorrent\ipfilter.dat"
Но прогресс движется дальше - и созрела идея, чтобы скрипт проверял размер файла на http://emulepawcio.sourceforge.net/nieuwe_site/Ipfilter_fakes/ipfilter.dat и в случае несовпадения с таковым в %userprofile%\Application Data\uTorrent\ipfilter.dat - только тогда начинал скачивать. Дескать, чтобы зря не качать.
И тут я застрял - не могу найти строчную утилиту получения размера с удалённого сервера, да и с определением размера в локальной папке тоже загвоздка. И дело не в коде, а в поиске соответствующих утилит.
Кто-то может помочь?
Камрады, есть такая полезная прикладная задача. Как известно, существует база "плохих" ip, которых можно смело банить в utorrent и других p2p. дык вот эта база пополняется.
Создал я такой вот батничек, который через scheduler запускал раз в неделю, что обновляло эту самую базу:
@echo off
if exist ipfilter.dat copy ipfilter.dat ipfilter.bak > nul
if exist ipfilter.dat del ipfilter.dat
wget.exe -r --tries=3 http://emulepawcio.sourceforge.net/nieuwe_site/Ipfilter_fakes/ipfilter.dat -O ipfilter.dat
move /Y ipfilter.dat "%userprofile%\Application Data\uTorrent\ipfilter.dat"
Но прогресс движется дальше - и созрела идея, чтобы скрипт проверял размер файла на http://emulepawcio.sourceforge.net/nieuwe_site/Ipfilter_fakes/ipfilter.dat и в случае несовпадения с таковым в %userprofile%\Application Data\uTorrent\ipfilter.dat - только тогда начинал скачивать. Дескать, чтобы зря не качать.
И тут я застрял - не могу найти строчную утилиту получения размера с удалённого сервера, да и с определением размера в локальной папке тоже загвоздка. И дело не в коде, а в поиске соответствующих утилит.
Кто-то может помочь?
gjf
Мануал по wget-у читай, он все это умеет. В твоем случае -r и -O не нужны, нужно -N или -m
Мануал по wget-у читай, он все это умеет. В твоем случае -r и -O не нужны, нужно -N или -m
как можно в операторе сравнения задать несколько значений, допустим:
Код: if /i "%computername%"=="miha" (ping yandex.ru) else (ping google.ru)
Код: if /i "%computername%"=="miha" (ping yandex.ru) else (ping google.ru)
Mikhaluch
Код: for %%j in (miha,petya,vasya) do (
if /i {%computername%}=={%%j} (ping yandex.ru) else (ping google.ru)
)
Код: for %%j in (miha,petya,vasya) do (
if /i {%computername%}=={%%j} (ping yandex.ru) else (ping google.ru)
)
igor_andreev
Да, действительно, всё упрощается до:
@echo off
wget.exe -N -r --tries=3 http://emulepawcio.sourceforge.net/nieuwe_site/Ipfilter_fakes/ipfilter.dat -O ipfilter.dat
copy /Y ipfilter.dat "%userprofile%\Application Data\uTorrent\ipfilter.dat"
Спасибо за совет!
Да, действительно, всё упрощается до:
@echo off
wget.exe -N -r --tries=3 http://emulepawcio.sourceforge.net/nieuwe_site/Ipfilter_fakes/ipfilter.dat -O ipfilter.dat
copy /Y ipfilter.dat "%userprofile%\Application Data\uTorrent\ipfilter.dat"
Спасибо за совет!
Народ!
Подскажите, как решить проблему:
1. в нерабочее время с помощью wget закачивается файл .exe
2. надо в автоматическом режиме проверить, запускается он или битый
3. если запускается, заменить им существующий
Проблема по п. 2, пробовал
start хххххх.ехе - не возвращает ощибку, если файл corrupted
Подскажите, может кто знает команду или утилиту командной строки для проверки ехешников на "запускаемость".
Подскажите, как решить проблему:
1. в нерабочее время с помощью wget закачивается файл .exe
2. надо в автоматическом режиме проверить, запускается он или битый
3. если запускается, заменить им существующий
Проблема по п. 2, пробовал
start хххххх.ехе - не возвращает ощибку, если файл corrupted
Подскажите, может кто знает команду или утилиту командной строки для проверки ехешников на "запускаемость".
Буду благодарен тому, кто поможет создать такой батник...
Имею:
prog.exe и test.txt в одном каталоге. В батнике запускается prog.exe, параметром является первая строка файла test.txt, после обработки prog.exe добавляет результат (либо ERROR, либо OK) в отдельный текстовый файл. Это уже есть и работает красиво.
Необходимо:
После каждой обработки (и вывода результата) необходимо удалить первую строку в test.txt, чтобы при очередном запуске prog.exe параметром для неё стала уже вторая строка. Всё это надо зациклить, пока не закончатся параметры (т.е. строки) в test.txt
Очень надеюсь, что это возможно сделать, поскольку сейчас мне приходиться довольствоваться макросом в Far для этих действий.
Имею:
prog.exe и test.txt в одном каталоге. В батнике запускается prog.exe, параметром является первая строка файла test.txt, после обработки prog.exe добавляет результат (либо ERROR, либо OK) в отдельный текстовый файл. Это уже есть и работает красиво.
Необходимо:
После каждой обработки (и вывода результата) необходимо удалить первую строку в test.txt, чтобы при очередном запуске prog.exe параметром для неё стала уже вторая строка. Всё это надо зациклить, пока не закончатся параметры (т.е. строки) в test.txt
Очень надеюсь, что это возможно сделать, поскольку сейчас мне приходиться довольствоваться макросом в Far для этих действий.
Цитата:
Необходимо:
После каждой обработки (и вывода результата) необходимо удалить первую строку в test.txt, чтобы при очередном запуске prog.exe параметром для неё стала уже вторая строка. Всё это надо зациклить, пока не закончатся параметры (т.е. строки) в test.txt
А зачам удалять строки?
Пишешь цикл обрабоки тхт файла аля:
FOR /F "tokens=*" %%i in (твой.txt) do (START prog.exe %%i)
Удалять надо, поскольку prog.exe ВСЕГДА автоматом цепляет первую строку в качестве параметра и никакой батник ей не указ
Цитата:
Удалять надо, поскольку prog.exe ВСЕГДА автоматом цепляет первую строку в качестве параметра и никакой батник ей не указ
Ну тогда может быть тем же циклом for читать во временный файл твой.TXT, начиная со второй строки, а затем заменять его на временный и т.д. по циклу
Добавлено:
Цитата:
Удалять надо, поскольку prog.exe ВСЕГДА автоматом цепляет первую строку в качестве параметра и никакой батник ей не указ
Или по циклу динамически создавать твой.txt файл из одной строки шаблона
Не подходит, т.к. test.txt довольно "тяжёлый" и плодить временные файлы на его основе - издевательство над хардом... хотя, если предложишь готовое решение - готов попробовать
шаблон тоже не подходит, так как каждый параметр уникален.
шаблон тоже не подходит, так как каждый параметр уникален.
mp3exchanger
Добавь в свой батник:
Код:
more +1 test.txt 1>test.tmp
move test.tmp test.txt
Добавь в свой батник:
Код:
more +1 test.txt 1>test.tmp
move test.tmp test.txt
01MDM, да, вот это, похоже, то что нужно. Отпишусь чуть позже.
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
Предыдущая тема: SAS.Планета (часть 2)
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.