![]() |
Проверить процесс, создать папку "AT-1" в папке "AT" и вместе с ее файлами и папками
Есть папка "AT" с постоянным именем, полный путь C:\AT
Есть папка "M" тоже с постоянным именем, полный путь C:\M В папке "M" есть еще папка с файлами и подпапками. Имя папки, которая лежит в папке "M" всегда разное и может принимать вид, например такой: "Блок © VF 办公室" Нужно чтобы при запуске BAT скрипта выполнялась проверка процесса "calc.exe" 1) Если процесс "calc.exe" есть, то Ожидать когда процесс "calc.exe" завершится, чтобы выполнить пункт (2) 2) Если процесса "calc.exe" нету, то создать папку "AT-1" в папке "AT" и всю папку "Блок © VF 办公室" вместе с ее файлами и подпапками переместить в созданную папку "AT-1", но только в том случае если в папке "AT" нету папки "AT-1", а если папка "AT-1" уже есть, то создать папку "AT-2" и переместить туда! затем закрыть BAT скрипт. P.S. В папке "M" файлы и подпапки могут быть с разными именами, расширениями, размерами и атрибутами (системные, скрытые, только для чтения) Это пример ДО выполнения скрипта: C:\AT\AT-1\Круг © VF 办公室\VF 办公室 © Круг\Круг.txt C:\M\Блок © VF 办公室\VF 办公室 © Блок\Блок.exe Это пример ПОСЛЕ выполнения скрипта: C:\AT\AT-1\Круг © VF 办公室\VF 办公室 © Круг\Круг.txt C:\AT\AT-2\Блок © VF 办公室\VF 办公室 © Блок\Блок.exe C:\M\ |
Код:
param( |
Fors1k спасибо, но это не совсем то что нужно. Я же не просто так указал категорию темы "CMD/BAT", а не PowerShell.
|
Цитата:
Если же требуется решение учебного задания, то оно не просто так дается студенту, а именно для того, чтобы он самостоятельно его решил, тем самым обогатив собственный опыт и знания. И что самое главное, задание выдается совсем не для того, чтобы студенты искали решение на профильных форумах... |
Цитата:
Разработка cmd была остановлена после выхода Windows 2000.В качестве основной командной оболочки используется PowerShell. PowerShell заменяет командную строку. Если сказать совсем простым языком, то powershell - это и есть cmd, если у вас не Pentium2 на windows95. Вы же, например, на море не на повозке ездите, а летаете на современном самолете. |
Тем не менее, "прогрессивное большинство" уже задрало сыпать в темы по cmd/bat офтопики на PoSh'е. Не нравится структура форума - иди с предложениями к администратору форума. А пока извольте следовать правилам.
Я сам предпочитаю решать задачи посредством PowerShell, но 1. Он не всегда есть - в том же PE, контейнерах 2. Он тяжело запускается - "примитивный" healthcheck, реализованный подобным образом, выжирает нереально много ресурсов В темах про .bat люди ожидают находить решения на .bat |
Цитата:
|
Тогда это не подходит :( PowerShell не подходит.
Есть ещё какие-то варианты? например на VBS? Цитата:
YuS_2, я не являюсь студентом! |
KOD65001, Ваш алгоритм неполон.
|
Код:
@echo off |
Foreigner,
Цитата:
|
Цитата:
|
Код:
PS > calc |
Цитата:
Цитата:
Приведите описание реальной проблемы во всех подробностях... Например, непонятно: Сколько всего может быть каталогов "AT-No"? Сам сценарий запускаться будет вручную или по расписанию? В общем, подробности таки требуются... Цитата:
Поэтому структура форума здесь не при чем. Да, в чем-то это удобно, иногда требуется разделение, но если таки требуется решение проблемы, то не имеет никакого смысла гонять пользователей по разделам форума и грозить им страшными карами, что не туда опубликовали свою проблему... гораздо проще предложить решение, а вот если оно уже не устраивает в части инструмента, тогда автор вопроса и должен сделать уточнение. Желательно, хоть и необязательно, с обоснованием, почему именно требуется конкретный инструмент ... и да, обоснование не может быть вида "потому, что хочу", ибо если хочешь, то и изучай, и пытайся решить самостоятельно... если не получается - опиши свое решение и задай вопрос о той части, где что-то не получается. Помогут обязательно. А вот когда описывается задача и только, то инструмент ... ну, вот никакого значения не имеет, имхо. Как-то так. |
CMD. Каталогов AT-X может быть много
Код:
@Echo Off Foreigner, Move со скрытой папкой не отработает. Не уверен, отработает ли с папкой по имени VF 办公室 © Круг YuS_2, Цитата:
Busla, Цитата:
ИМХО, оффтоп -это не предложенное решение иными средствами, а панегирики на тему, какой же аццтой этот CMD, VBS и т д. |
Цитата:
У меня отработало. Но, у меня все, включая cmd.exe, в UTF-8 без бом. |
Цитата:
|
Цитата:
Iska, Foreigner, "имя процесса" я в коде сразу исправил на свой. Процесс "calc.exe" - это просто для примера. Периодически на работе требуется менять процесс в зависимости от операций и поставленных задач начальством. Foreigner, megaloman, Да это именно то, что нужно! Только код от Foreigner что-то не перемещает папку которая находится в папке "М", пробовал разные варианты UTF с бом и без..а вот у megaloman почему то хорошо перемещает...я так понимаю что в методе лучше использовать copy вместо move |
Вложений: 1
Цитата:
|
Спасибо ВСЕМ за помощь! :) megaloman, Foreigner, Fors1k - огромное спасибо за решение!
|
Foreigner, Вы зачем-то процитировали не себя, а меня, попутно ответив на не заданный вопрос ;) (речь шла про Калькулятор).
|
Foreigner, кстати да, в цитате речь про калькулятор же, а не про кодовую страницу... как-то сразу и не заметил :)
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Что касается write, то он есть. Процесс wordpad.exe Код:
PS > write.exe |
Они ссылаются на C: \ Windows \ System32 \ calc.exe по причине обратной совместимости. А так, да, в настоящее время калькулятор один - современное приложение для Windows с открытым исходным кодом (на гитхабе).
Process Explorer выделяет Calculator.exe ярко-голубым (для WinRT), уровень целостности AppContainer (давно смотрела, но вряд ли что-то там изменилось).
//к делу не относится, но на всякий случай (вдруг кому-то интересно будет): в NET Framework UseShellExecute = true используется по умолчанию; в NET Core UseShellExecute = false - по умолчанию. Причина: производительность. UseShellExecute очень специфичен для Windows и значительно медленнее. |
Цитата:
Foreigner, спасибо, ясно. Цитата:
Цитата:
Цитата:
|
Цитата:
Код:
PS > [Diagnostics.ProcessStartInfo]::new().UseShellExecute Код:
PS > 11 > 11.txt |
Насколько я знаю, поведение по Start-Process в PowerShell Core все ещё аналогично Windows PowerShell - все ещё &True; в NET Core по умолчанию &False.
См. следующую ссылку https://docs.microsoft.com/en-us/win...p-registration И 2 ссылку: https://docs.microsoft.com/ru-ru/win...ectedfrom=MSDN |
Foreigner,
Цитата:
Цитата:
![]() |
Цитата:
|
|
Iska, Спасибо за рекомендацию, ознакомилась с целым циклом статей у него про ShellExecute и проч. (ранее я не знала блоге). Цитата:
|
Время: 03:12. |
Время: 03:12.
© OSzone.net 2001-