Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Управление из командной строки


Рекомендуемые сообщения

Всем привет!

Нужен батничик что бы все файлы в папке переименовывал. В новом имени файла оставались только цифры. Например: asd123e456.txt -> 123456.txt у кого есть какие соображения?

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 589
  • Создана
  • Последний ответ

Топ авторов темы

Добрый день.

Ситуация следующая: на удаленном ПК выполняется программа, которая прописывает

в определенной папке логи своей работы. Логам присваиваются имена по типу

13.02.2009_название объекта_лог.ivl

05.02.2009_название объекта_лог.ivl

29.01.2009_название объекта_лог.ivl

Нужно организовать отсылку этих логов на ftp. Это я пробовал сделать так:

из батника, который выполнял загрузку данных с сервера на удаленную машину

некоторых данных с помощью wget запускался: ftp -s:command , в котором прописано:

open такой-то фтп

username

userpassword

cd хочу положить лог по этому пути на сервере

lcd \

lcd logs

send *.ivl

bye

Отсылка лога удавалась, но отсылается всегда файл, который при сортировке по имени

будет первым, т.е. в данном случае это 05.02.2009_название объекта_лог.ivl,

а нужен файлик последний измененный. Подскажите как реализовать, пожалуйста.

ЗЫ: я думал, что send *.ivl будет отправлять все файлы с таким расширением на сервер. Это не так. Можно ли организовать отправку всех файлов с таким расширением на сервер, но при этом, чтобы не переписывались файлы, которые уже там есть?

Ссылка на комментарий
Поделиться на другие сайты

greylynx:

Можно ли организовать отправку всех файлов с таким расширением на сервер

Можно, только файл команд будет выглядеть так:

open такой-то фтп

username

userpassword

cd хочу положить лог по этому пути на сервере

lcd \

lcd logs

prompt

mput *.ivl

quit

тогда будут все отсылаться.

но при этом, чтобы не переписывались файлы, которые уже там есть?

если на ftp уже есть файлы с такими же именами, они перепишутся - этого не изменишь. Выходов два: класть файлы на фтп в разные каталоги или переименовывать перед заливкой. Файлы с разными именами само собой не изменятся.

spart: комбинация цифр и букв в имени подчинена какой-то маске или же они будут тасоваться совершенно произвольно?

Ссылка на комментарий
Поделиться на другие сайты

Спасибо за оперативный ответ.

Предполагал что так и надо, только не был уверен :) Уточню ситуацию: логи пишутся программой на протяжении некоторого времени, с момента первого запуска программы после последней загрузки данных с фтп. В основном, промежуток между закачками - 7 дней, но он может составлять и другой отрезок времени(тут непредсказуемо когда понадобится обновлять информацию). И логам присваивается имя: Первый запуск программы после закачки информации_Название объекта_лог.ivl т.е. , например, 05.02.2009_название объекта_лог.ivl - изменяется только дата Ну, и соответсятвенно нужно предыдущий лог выложить на сервер.

Можно ли перед отправкой организовать удаление в корзину содержимого папки с этими логами, оставив файлы за последние 14 дней?

Ссылка на комментарий
Поделиться на другие сайты

Еще вопрос: эти все действия ведь можно заменить перемещением файлов? Это было бы даже лучше, чем копирование файла на сервер, и отпадает надобность организовывать удаление старых файлов. Пробовал move - недопустимая команда.

Ссылка на комментарий
Поделиться на другие сайты

Можно ли перед отправкой организовать удаление в корзину содержимого папки с этими логами, оставив файлы за последние 14 дней?
Еще вопрос: эти все действия ведь можно заменить перемещением файлов? Это было бы даже лучше, чем копирование файла на сервер, и отпадает надобность организовывать удаление старых файлов. Пробовал move - недопустимая команда.

Перемещать файлы на ftp нельзя.

Я бы в таком случае порекомендовал просто удалять логи после отправки, тогда не придется контролировать их дату создания.

Но если по каким-то причинам этого делать нельзя, удалить все логи старше 14 дней можно с помощью внешней утилиты forfiles, такой командой

forfiles /M *.ivl /D -14 /C "cmd /c del /Q @file"

spart: при таком условии средствами батников практически нереализуемо, проще программу написать.

Ссылка на комментарий
Поделиться на другие сайты

spart: при таком условии средствами батников практически нереализуемо, проще программу написать.

А вырвать символы с названия файла по маске возможно реализовать в bat файле?

Ссылка на комментарий
Поделиться на другие сайты

spart: да, можно. К примеру, в новом имени будут только 1, 2...n символы из старого и т.п.

что-то подобное уже делалось тут

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Я тут читал вашу историю про кавычки в батниках .... страница намбер 3-4. У меня аналогичная проблемка, хотя её можно решить посредством ярлыков, но я сунулся писать батник и понеслось....

cd /D "C:\Documents and Settings\SASA\Мои документы\EA Games\The Sims 2"del /Q "C:\Documents and Settings\SASA\Мои документы\EA Games\The Sims 2\*.cache"cd /D "C:\Program Files\EA Games\The Sims 2 Сады и особняки Каталог\TSBin"start "C:\Program Files\EA Games\The Sims 2 Сады и особняки Каталог\TSBin\Sims2Launcher.exe"

Народ помогите дети плачут.... симсы не стартуют :blush2: А точнее я не врубаюсь что я не так пишу....

Ссылка на комментарий
Поделиться на другие сайты

После извратов я понял проблема из за Мои документы и остальных русских названий.... их что на переменные заменить?

Ссылка на комментарий
Поделиться на другие сайты

Indomito: У команды start в кавычки заключается не весь путь к файлу, а имена каждого каталога по отдельности, то есть ее надо записать так:

start C:\"Program Files"\"EA Games"\"The Sims 2 Сады и особняки Каталог"\TSBin\Sims2Launcher.exe

Ссылка на комментарий
Поделиться на другие сайты

Тролль: понимаешь, даже команда DEL не работает... вот скрин

C:\Documents and Settings\SASA\Рабочий стол>C:

C:\Documents and Settings\SASA\Рабочий стол>cd \

C:\>set sasax=C:\Documents and Settings\SASA\╠юш фюъєьхэЄ√\EA Games\The Sims 2

C:\>pause

Для продолжения нажмите любую клавишу . . .

C:\>del /Q "C:\Documents and Settings\SASA\╠юш фюъєьхэЄ√\EA Games\The Sims 2"\*.

cache

Системе не удается найти указанный путь.

C:\>pause

Для продолжения нажмите любую клавишу . . .

это при коде

C:cd \set sasax=C:\Documents and Settings\SASA\Мои документы\EA Games\The Sims 2pausedel /Q "%sasax%"\*.cachepauseC:cd /d "C:\Program Files\EA Games\The Sims 2 Сады и особняки Каталог\TSBin"pausestart "C:\Program Files\EA Games\The Sims 2 Сады и особняки Каталог\TSBin\Sims2Launcher.exe" 

может кодовую страницу переключить?

Те дело до "START" и не доходит.... путь не найден и всё...

Изменено пользователем Indomito
Ссылка на комментарий
Поделиться на другие сайты

Проблема кажется заключается в редакторе те, батник нужно сохранять в кодировке DOS866 и хотя у меня стоит BRED2... такой кодировки там нет.... странно.

Ссылка на комментарий
Поделиться на другие сайты

Да, похоже, проблема в кодировке. Попробуй использовать Блокнот и поставить в начале батника команду chcp 1251

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Использовал WordPad записал в кодировке DOS и получил

C:\Documents and Settings\SASA\Рабочий стол>C:

C:\Documents and Settings\SASA\Рабочий стол>cd \

C:\>set sasax=C:\Documents and Settings\SASA\Мои документы\EA Games\The Sims 2

C:\>pause

Для продолжения нажмите любую клавишу . . .

C:\>del /Q "C:\Documents and Settings\SASA\Мои документы\EA Games\The Sims 2"\*.

cache

Не удается найти C:\Documents and Settings\SASA\Мои документы\EA Games\The Sims

2\*.cache

C:\>pause

Для продолжения нажмите любую клавишу . . .

C:\>C:

C:\>cd /d "C:\Program Files\EA Games\The Sims 2 Сады и особняки Каталог\TSBin"

C:\Program Files\EA Games\The Sims 2 Сады и особняки Каталог\TSBin>pause

Для продолжения нажмите любую клавишу . . .

дальше технические проблемы с запуском, надеюсь что пути я "уговорил" :blush2:

Ссылка на комментарий
Поделиться на другие сайты

Вот рабочий вариант может кому и пригодится ;)

C:cd \CD C:\"Documents and Settings"\SASA\"Мои документы"\"EA Games"\"The Sims 2"del /Q C:\"Documents and Settings"\SASA\"Мои документы"\"EA Games"\"The Sims 2"\*.cacheC:cd \cd C:\"Program Files"\"EA Games"\"The Sims 2 Сады и особняки Каталог"\TSBinstart Sims2Launcher.exe

:blush2:

Изменено пользователем Indomito
Ссылка на комментарий
Поделиться на другие сайты

И окончательно

set NAMELOC=SASApauseecho %NAMELOC%C:cd \CD C:\"Documents and Settings"\%NAMELOC%\"Мои документы"\"EA Games"\"The Sims 2"del /Q C:\"Documents and Settings"\%NAMELOC%\"Мои документы"\"EA Games"\"The Sims 2"\*.cacheC:cd \cd C:\"Program Files"\"EA Games"\"The Sims 2 Сады и особняки Каталог"\TSBinstart Sims2Launcher.exe

Хотя вот так лучше.... подскажите откуда извлечь имя пользователя текущего, его нет в станд. переменных, но метод должен быть. Я понимаю что имя где то в реестре, но как его записать в батник, а?

.........

Сорри уже нашел это %username% тогда получаем

C:cd \CD C:\"Documents and Settings"\%username%\"Мои документы"\"EA Games"\"The Sims 2"del /Q C:\"Documents and Settings"\%username%\"Мои документы"\"EA Games"\"The Sims 2"\*.cacheC:cd \cd C:\"Program Files"\"EA Games"\"The Sims 2 Сады и особняки Каталог"\TSBinstart Sims2Launcher.exe
Изменено пользователем Indomito
Ссылка на комментарий
Поделиться на другие сайты

Maikll, спасибо.

Решил сделать все-же иначе немного(суть от этого не поменялась): создал отдельный батник, который выполняется раз в 7 дней, в котором прописано:

tskill процесс который пишет логи

ftp -s:sendlog

copy d:\Logs\*.* d:\oldlogs

del/q d:\Logs\*.*

d:\процесс который пишет логи

А сам sendlog вот такой:

open такой-то фтп

с таким логином

и паролем

cd путь на фтп, по которому копируются логи

lcd \

lcd logs

prompt

mput *.ivl

bye

Все оказалось очень просто :) , спасибо за помощь. forfiles взял на заметку

Ссылка на комментарий
Поделиться на другие сайты

Появилось еще несколько вопросов:

1) можно ли средствами командной строки произвести безопасное извлечение сменного носителя информации?(флешки)

Чтобы было понятней: хотелось бы, чтобы я мог вставить флешку в порт, при срабатывании автозапуска выполнялся некоторый батник, и, после того как он отработался, флешка была безопасно извлечена из системы(тут загвоздка в том, чтобы не подтверждать это безопасное извлечение).

Кстати, если не трудно, разъясните с автораном(это, правда, не совсем по теме, скорее всего): если у меня на флешке autorun.inf, в котором прописано

[Autorun]

Open=autorun.bat

то он(autorun.bat) автоматически не отрабатывается, он отрабатывается, только если в контекстной менюшке выбрать"автозапуск". Можно ли назначить автоматический запуск autorun.bat(без лишних кликов мышкой). Либо же каким-то образом организовать запуск батника D:\123456.bat , если в системе определяется сменный носитель е:\ ?

Ссылка на комментарий
Поделиться на другие сайты

можно ли средствами командной строки произвести безопасное извлечение сменного носителя информации?(флешки)

Можно произвести отключение с помощью devcon, хотя насчет насколько оно будет "безопасным" я затрудняюсь сказать т.к. контроля, используется ли диск в данный момент при этом не происходит.

хотелось бы, чтобы я мог вставить флешку в порт, при срабатывании автозапуска выполнялся некоторый батник, и, после того как он отработался, флешка была безопасно извлечена из системы

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

Кстати, если не трудно, разъясните с автораном

autorun.inf, подробный хелп

Можно ли назначить автоматический запуск autorun.bat(без лишних кликов мышкой).

Можно, см хелп. Только если в системе не отключен автозапуск флешек.

Либо же каким-то образом организовать запуск батника D:\123456.bat , если в системе определяется сменный носитель е:\ ?

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

Ссылка на комментарий
Поделиться на другие сайты

Спасибо.

Посмотрел devcon... Безопасно извлечь не получается, можно только отключить USB-концентраторы(все либо по ID), но если система не отпускает флешку(я имею ввиду случай, когда выводится окно с сосбщением, что "оборудование не может быть отключено прямо сейчас"), то и соответствующий концентратор не отключается... В общем пришел к выводу, что легче дописать shutdown -s

Ссылка на комментарий
Поделиться на другие сайты

:) недописаное сообщение случайно отправил java script:emoticon(':(', 'smid_8')

Мдя... я не совсем правильно (точнее совсем неправильно) описал, то, чего добиваюсь.

Попробую еще раз.

На флешке есть файл autorun.inf, в котором я пытался назначить автозапуск батника autorun.bat:

[Autorun]

Open=autorun.bat

, он же, в свою очередь запускает батник Zalivka.bat(этот выполняет операции копирования с флешки на машину, и с машины на флешку, после чего выключает компьютер - тут ранее предполагалось безопасное извлечение флешки ) на машине и записывает лог его выполнения :

set %DATE%

D:\Zalivka.bat >e:\1_Zalivka_new\Logs\имя объекта_"%DATE%".txt

Вроде бы так. Так вот теперь не получается назначить выполнение того самого autorun.bat. Если его руками запускать - отрабатывается, а с автозапуском ничего не вышло... где я не досмотрел?

Ссылка на комментарий
Поделиться на другие сайты

Посмотрел devcon... Безопасно извлечь не получается, можно только отключить USB-концентраторы(все либо по ID), но если система не отпускает флешку(я имею ввиду случай, когда выводится окно с сосбщением, что "оборудование не может быть отключено прямо сейчас"), то и соответствующий концентратор не отключается... В общем пришел к выводу, что легче дописать shutdown -s

Ну во-первых, для отключения флешки вовсе не обязательно отключать концентраторы. Все делается гораздо проще, нужно только знать уникальный id флешки. Заходим в диспетчер устройств, находим флешку в разделе Контроллеры универсальной последовательной шины, заходим в свойства, вкладка Сведения, из выпадающего списка Коды (ID) оборудования - получаем на выбор несколько кодов для нашего устройства, можно воспользоваться любым.

Затем несложной командой devcon remove "id-код" спокойно отключаем именно эту флешку, не затрагивая остальные устройства.

Но скажу честно, особого смысла в отключении флешки программно (как и shutdown -s для этого ) я не вижу. Компьютеры еще не настолько интелектуальны, чтобы по команде флешка сама выскакивала из порта, а значит это делать придется руками. Со всеми вытекающими.

На флешке есть файл autorun.inf, в котором я пытался назначить автозапуск батника autorun.bat:...

...Вроде бы так. Так вот теперь не получается назначить выполнение того самого autorun.bat. Если его руками запускать - отрабатывается, а с автозапуском ничего не вышло... где я не досмотрел?

Это будет работать только если в ОС не отключен автозапуск для флешек, а это как раз зачастую и сделано для предотвращения проникновения вирусов. Если при подключении флешки не отображается стандартный диалог автоплея, то и если прописать действие в autorun.inf, - тоже ничего не выйдет.

З.Ы. если число компьютеров, на которых надо выполнять эти действия невелико- проще мониторить подеключение устройства с таким id средствами того же nncron и при подключении запускать на выполнение батник.

Ссылка на комментарий
Поделиться на другие сайты

Насчет отключения конкретной флешки по id - я понял, но сложность в моем случае заключается в том, что батник, который будет выполнять действие извлечения будет находиться на ПК, который будут использовать разные люди, флешки у них могут меняться(выходить из строя, забывать конкретную флешку), соответственно мне придется каждый раз переписывать батник+к этому надо еще и флешку человека иметь непосредственно у себя... так что легче человеку будет включить ПК после заливки информации (пока нет требований к беспрерывной работе).

Автозапуск на машинах не отключен, менюшка "Автоплей" выпадает, но, тем не менее, автозапуск батника не производится... не могу понять что я неправильно делаю... возможно для автозапуска нужно, чтобы файл имел расширение .ехе???(но об этом ничего не указано, и в примерах .txt).

Вопрос: Icon - не обязательный параметр? Он служит только для визуализации содержимого и все?(ну, я так понимаю).

Машин таких пока около 30(а вообще по Украине до 80), разбросаны по всему Киеву.... Пока для меня самый лучший вариант - чтобы сработал автозапуск, отработался батник, выключилась машина и человек ее вручную включил. Это сведет к минимуму человеческий фактор и количество необходимого оборудования и устройств(человеку-то надо только вставить флешку, подождать пока выключится ПК, вытащить флешку и включить ПК...)

Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...